我有一个ListView包含每个项目上的按钮。 我希望项目点击会导致列表中的OnItemClick事件触发, ,因为该事件包含比按钮的OnClick事件更多的信息(id,position)。fire OnItem点击按钮时点击listview
这是一个重要的动作列表,这就是为什么我需要按钮,不想要一个普通的项目点击会导致它触发(我猜使按钮可以聚焦会做的伎俩)。
这可能吗?
我有一个ListView包含每个项目上的按钮。 我希望项目点击会导致列表中的OnItemClick事件触发, ,因为该事件包含比按钮的OnClick事件更多的信息(id,position)。fire OnItem点击按钮时点击listview
这是一个重要的动作列表,这就是为什么我需要按钮,不想要一个普通的项目点击会导致它触发(我猜使按钮可以聚焦会做的伎俩)。
这可能吗?
尝试使你自己的适配器的列表。在getView()方法做你的必需品要求。
setListAdapter(new ArrayAdapter<string>(this, R.layout.list_item, strings) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (null == convertView) {
row = mInflater.inflate(R.layout.list_item, null);
} else {
row = convertView;
}
Button bt1 = (Button) row.findViewById(android.R.id.bt1);
bt1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
//you will get position and do necessary method
}
});
return row;
}
});
行可点击吗?根据行是否可点击,我可能会执行以下操作之一;
你可以只设置clickable=false
上的按钮,让触摸propergate到父,即列表视图排按钮是,然后onItemClickListener
应通知该行
您可以设置在该报告上的按钮位于该行的位置的按钮标签(View.setTag(..)),并阅读了onClickListener
这个标签,你可以遵循freshDroid此页面上提示问题的答案却是会效率低下因为您每次创建新的OnClickListener
时都会创建/回收视图,这会导致额外的GC工作。
我这样工作。 clickable = false按钮但它不传播onItemClickListener。为你做这个方法吗? –
工作(只要我使用最终的变种的位置)。 谢谢。 – Shlomi
你想要哪个ID?你的List项目中有哪些项目? – freshDroid
我的问题实际上比较复杂,因为有时候我到onClick的位置是错误的。但这是另一个问题... – Shlomi