我有listview
,lisview的每个项目都是linearlayout
。
每个linearlayouts都包含3个textviews。
如何为这些文字视图设置onclicklistener
?
我试过这个:
TextView tv=(TextView)findById(R.id.textView1);
tv.setOnClickListener(...);
这会给我一个nullpointerexception
。
我也为listview尝试了setonitemclickedlistener,但这只允许我对linearlayout进行操作,而不是textview。
提前感谢。
答案 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