onclicklistener for listite的子项目

时间:2012-07-24 01:31:47

标签: android listview android-listview android-event subitem

我有listview,lisview的每个项目都是linearlayout。 每个linearlayouts都包含3个textviews。

如何为这些文字视图设置onclicklistener

我试过这个:

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

这会给我一个nullpointerexception

我也为listview尝试了setonitemclickedlistener,但这只允许我对linearlayout进行操作,而不是textview。

提前感谢。

3 个答案:

答案 0 :(得分:1)

如果这是静态需要的,并且您的视图是基于XML的,那么我就是这样做的:

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

只要触摸/点击文本视图,就会调用myHandler。当你在列表视图中使用它时,你仍然需要在getView()中添加一个标记,并在myHandler()中使用它来确定按下了哪个行/字段。

希望这有帮助。

答案 1 :(得分:0)

要获得此要求,您必须使用自定义适配器类,以便您可以非常轻松地获得此类。使用自定义适配器非常easy and simple进程。

点击此link,其简单的应用程序,并代替Buttons,您可以使用TextView

祝你有愉快的一天..

答案 2 :(得分:0)

你应该去创建像使用BaseAdpter这样的客户adpter 这里传递你的列表,并根据位置设置该列表到Textview,在这里你也可以设置onClick事件 你可以像ex那样创建基础Adpter (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设置这个adpter