android自定義適配器的ListView的事件監聽

jopen 9年前發布 | 24K 次閱讀 Android Android開發 移動開發

  1. 自定義適配器的ListView的事件監聽原理
  2. 案例需要實現的功能
  3. 功能實現步驟
  4. 說明
  5. </ol> </blockquote>

    自定義適配器的ListView的事件監聽原理

    在自定義適配器類的getView方法中,我們可以得到每個item中的所有的控件對象。想對某個控件進行點擊監聽,可以調用View對象的setOnClickListener方法,調用setOnClickListener方法,需要傳遞一個View.OnClickListener對象作為參數,事件觸發時,View.OnClickListener對象的onClick方法會被調用,同時把被點擊的控件對象作為參數傳回onClick方法,我們在onClick方法中,調用被點擊的控件的getId方法就知道是哪個控件被點擊,為了知道是list中position為多少的控件被點擊,我們可以可getView方法中調用需要監聽的控件的setTag(position)方法,設置該控件的Tag為position,在onClick方法中我們調用被點擊控件的getTag方法就可知道position為多少了。 最好,把事件響應的代碼放在Activity中。

    案例需要實現的功能

    在ListView中,每一行有兩個Button:itemButton1和itemButton2,對這兩個按鈕的點擊事件進行監聽,被點擊時,用Toast顯示該時itemButton1還是itemButton2被點擊了,被點擊的按鈕是第幾行。

    android自定義適配器的ListView的事件監聽

    功能實現步驟

    1.在MyListViewAdapter適配器中增加View.OnClickListener類型的成員變量cliker;

    2.在getView方法中得到兩個Button對象,并調用setTag方法把當前的position設置為tag,和setOnClickListener方法設置clicker對象為監聽器對象

        Button itemButton1 = (Button) convertView.findViewById(R.id.itemButton1);
        itemButton1.setTag(position);itemButton1.setOnClickListener(cliker);
        Button itemButton2 =  (Button) convertView.findViewById(R.id.itemButton2);
        itemButton2.setTag(position);
        itemButton2.setOnClickListener(cliker);


    3.Activity類實現View.OnClickListener接口,并重寫onClick方法。把該Activity作為View.OnClickListener對象傳遞到MyListViewAdapter類中的clicker對象。在onClick中,通過v.getId()得到該控件的id,判斷是itemButton1還是itemButton2,通過v.getTag()得到控件的tag,判斷是第幾個itemButton被點擊了。

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.itemButton1:
        {
            Toast.makeText(this, "position為"+v.getTag()+"的itemButton1被點擊", Toast.LENGTH_SHORT).show();
            break;
        }
        case R.id.itemButton2:
        {
            Toast.makeText(this, "position為"+v.getTag()+"的itemButton2被點擊", Toast.LENGTH_SHORT).show();
            break;
        }
        default:
            break;
        }
    }


    說明

    ListView的使用和自定義適配器的使用請看http://www.yee4.com/blog/357.htmlhttp://www.yee4.com/blog/360.html

    源代碼下載 http://pan.baidu.com/s/1o6odcuA

    </blockquote>

    來自

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!