簡體   English   中英

用於列表視圖子項的onclicklistener

[英]onclicklistener for subitems of listview

我有一個listview ,lisview的每個項目都是一個linearlayout 每個線性布局包含3個文本視圖。

如何為這些onclicklistener設置onclicklistener

我嘗試了這個:

TextView tv=(TextView)findById(R.id.textView1);
tv.setOnClickListener(...);

這拋出了一個nullpointerexception

我還嘗試了setonitemclickedlistener的listview,但這只允許我對線性布局進行操作,而不能對textview進行操作。

提前致謝。

如果靜態需要這樣做,並且您的視圖基於XML,這就是我所做的:

<TextView
    ...
    android:clickable="true"
    android:onClick="myHandler"
/>

每當觸摸/單擊文本視圖時,都會調用myHandler。 在列表視圖中使用此標記時,仍然需要在getView()中添加一個標記,並在myHandler()中使用該標記來確定按下了哪個行/字段。

希望這可以幫助。

為了獲得此要求,您必須使用自定義適配器類,以便可以非常輕松地獲得此要求。 使用自定義適配器是非常easy and simple過程。

單擊此鏈接 ,其簡單的應用程序,然后可以使用TextView代替Buttons

祝你今天愉快..

您應該創建諸如Use BaseAdpter之類的自定義adpter,然后在此處傳遞列表並根據位置將列表設置為Textview,在這里您可以設置onClick事件,還可以創建基本的Adpter,例如ex(1)

public class GridAdpter extends BaseAdapter 
{

List<String> checkednamelist;

public GridAdpter(Context c, List<String> myitem) {

this.checkednamelist =myitem
}

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

            //Here change with yur row xml file name and  3 textview control id name
    View grid;
    if (convertView == null) {
        grid = layoutInflater.inflate(R.layout.row_grid, null);
    } else {
        grid = convertView;
    }

    TextView textView2 = (TextView) grid.findViewById(R.id.txtlable2);    
    textView.setText(checkednamelist.get(position);
    textView2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // do here as per your require

        }
    });

}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return myitem.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return myitem.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

public List<String> mycheckeditem() {
    return checkednamelist;
}

}

//最后用您的listview設置此適配器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM