2

我有一个listview,lisview 的每个项目都是一个linearlayout. 每个线性布局包含 3 个文本视图。

我如何onclicklistener为这些文本视图设置一个?

我试过这个:

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

这给了我一个nullpointerexception.

我还为列表视图尝试了 setonitemclickedlistener,但这仅允许我在线性布局上操作,而不是文本视图。

提前致谢。

4

3 回答 3

2

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

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

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

希望这可以帮助。

于 2012-07-24T07:00:28.853 回答
0

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

单击此链接,它的简单应用程序,并代替Buttons您可以使用TextView

祝你今天过得愉快..

于 2012-07-24T03:02:11.617 回答
0

你应该去创建像使用 BaseAdpter 这样的客户适配器,在这里传递你的列表并根据位置设置该列表到 Textview,在这里你可以设置 onClick 事件,你也可以像 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;
}

}

// 最后用你的列表视图设置这个适配器

于 2012-07-24T07:10:25.653 回答