请帮忙。
正如我在标题中所述,我试图让列表适配器的一行中的各个元素根据用户点击的内容启动不同的操作。
它“有点”有效,但需要很长时间才能对用户点击使用react。我做错了什么?
提前致谢
所以我在
中尝试了下面的代码 @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Get the item that was clicked
Cursor c = (Cursor) this.getListAdapter().getItem(position);
// c.moveToNext();
prescription_id = c.getString(0);
TextView pName = (TextView) v.findViewById(R.id.text2);
TextView paName = (TextView) v.findViewById(R.id.text3);
TextView rDateLabel = (TextView) v.findViewById(R.id.textView1);
TextView rDate = (TextView) v.findViewById(R.id.text4);
TextView rLeftLabel = (TextView) v.findViewById(R.id.text5);
TextView rLeft = (TextView) v.findViewById(R.id.text6);
ImageView callPhone = (ImageView) v.findViewById(R.id.Call_Pharmacy);
pName.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
goToPDetails();
}
});
pa.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
goToPDetails();
}
});
rDateLabel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
goToPDetails();
}
});
rDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
goToPDetails();
}
});
rLeftLabel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
goToPDetails();
}
});
rLeft.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
goToPDetails();
}
});
callPhone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Some Code
}
});
}
最佳答案
所有这些 onClick 监听器(那些在一个 ListView 元素的单个 subview 上的监听器)可能不应该出现在 onListItemClick 方法中,而应该出现在适配器的 getView 方法中(正确使用 convertView 参数)。
你这样做的方式似乎很不对,如果你在正确的地方正确地实现了各种 onClick 监听器,也许你的 onListItemClick 方法甚至都不需要。
关于android - 使用 SimpleCursorAdapter 绑定(bind)到 DB 的 ListActivity 中连续单个元素的 OnclickListener 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7033858/