不同类中的列表视图和自定义适配器。
自定义适配器有2个textViews
在OnItemClickListener中,我为textviews创建了监听器。
TextView监听器有时会工作一段时间不工作。
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
final int pos, final long id) {
TextView tv1 = (TextView) view.findViewById(R.id.tv1);
tv1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(act, "tv1 clicked", 300).show();
}
});
TextView tv2 = (TextView) view.findViewById(R.id.tv2);
tv2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(act, "tv2 clicked", 300).show();
}
});
// listViewListeners(parent, view, pos, id);
}
});
答案 0 :(得分:1)
您正在尝试在单击父级时在子视图上注册click事件,因此第一次它将无法工作,因为父级将从用户触摸,但基于子元素提升和事件侦听器,它需要单击来自孩子。
避免使用界面
interface ClickListener{
void tvOneClicked(int position);
void tvTwoClicked(int position);
}
并且从活动中调用适配器传递接口,如
中所示adapter = new CustomAdapter(this,some_layout,somedata, new ClickListener(){
@Override
public void tvOneClicked(int position){
//Toast.makeText(act, "tv1 clicked", 300).show();
}
@Override
public void tvOneClicked(int position){
//Toast.makeText(act, "tv2 clicked", 300).show();
}});
在您的Adapter
中,当您的任何activity
时,请使用此号码致电textview
点击
private ClickListener clickListener;
public CustomAdapter(Activity act,int layout,List<> data, ClickListener listener){
this.clickListener = listener;
}
public void getView(...){
...
tv1.setOnClickListener(new OnClickListener() {
@override
public void onClick(View v) {
clickListener.onOneClicked(position);
}
});
tv2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
clickListener.onTwoClicked(position);
}
});
...
}