情况就是这样:我有一些包含一些项目的Listview。在每个项目中,有两个可单击的视图,仅在用户单击其父项后显示。
它的工作原理如下:
productList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(final AdapterView<?> parent, final View view, final int position, long id) {
TextView txtAdd = (TextView) view.findViewById(R.id.txt_add_units);
txtAdd.setVisibility(View.VISIBLE);
txtAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
}
});
TextView txtRemove = (TextView) view.findViewById(R.id.txt_remove_units);
txtRemove.setVisibility(View.VISIBLE);
txtRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
}
});
basketProductsListAdapter.notifyDataSetChanged();
}
});
第一次单击listview项时,会显示其txtAdd和txtRemove子视图,然后如果用户单击它们,则会执行其onclickListener中的代码。
问题仅出现在第一个listview项目中。第一次单击txtAdd并显示txtRemove,但是第一次用户点击子视图,他们的父级的ItemClickListener再次被触发,然后子视图(txtAdd和txtRemove)没有接收到clickListener。以下时间它们完美地工作。奇怪的是它只是第一次出现在listView的第一个项目上。
有什么想法吗?提前致谢!
答案 0 :(得分:0)
将此行添加到listview xml android:descendantFocusability="blocksDescendants"
Thing是我们的子视图可能是可聚焦的,因此第一次单击将用于焦点,然后itemClick将起作用。避免可聚焦在xml中添加该行
如果它不起作用,请尝试添加
android:focusable="false"
android:focusableInTouchMode="false"
到列表视图的子视图