jqp*_*liq 60
代替的OnItemClickListener,添加一个OnClickListener到每个从适配器返回你的看法.您需要使用setItemsCanFocus
设置列表:
ListView list = (ListView) findViewById(R.id.myList);
list.setAdapter(new DoubleClickAdapter(this));
list.setItemsCanFocus(true);
Run Code Online (Sandbox Code Playgroud)
然后在你的适配器的getView
,这将产生一个可点击的行.假设该按钮位于膨胀的xml中.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(context, R.layout.cell, null);
view.setClickable(true);
view.setFocusable(true);
view.setBackgroundResource(android.R.drawable.menuitem_background);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(context).setTitle("touched").show();
}
});
return view;
}
Run Code Online (Sandbox Code Playgroud)
mei*_*ilp 51
设置你ImageButton
的属性:
android:focusable="false"
Run Code Online (Sandbox Code Playgroud)
因为AbsListView.onTouchEvent
检查child.hasFocusable()
.
Jul*_*mes 10
我已经在SDK级别8和16上测试了以下解决方案.
在 getView()
setFocusable(false);
setClickable(false);
Run Code Online (Sandbox Code Playgroud)
而不是在适配器中设置它们是真的getView()
我认为原始问题想要的,并且意味着一个OnItemClickListener
被调用,只要OnClickListener
没有设置getView()
.
我假设任何事情,你可以做一个查看的OnClickListener
,你可以在做很容易ListView
的OnItemClickListener
.(setOnClickListener
在View上隐式地将视图设置为可点击,这显然可以防止ListView
相应的OnItemClickListener
被调用.)
根据ImageButton
物品被按压或翻转时的视觉状态,行为是人们所期望的.
解决方案是一个轻微的错觉,因为它是被按下的列表项而不是它ImageButton
自己,所以如果按钮没有占据整个列表项,单击项中的其他位置仍然会使按钮的可绘制状态反映点击.焦点相同.这可能是值得付出的代价.
这肯定会奏效.将其添加到布局定义中.
android:descendantFocusability="blocksDescendants"
Run Code Online (Sandbox Code Playgroud)
在这里找到解决方案
小智 5
OnClickListener
为每个视图设置一个替代方法是不使用ImageButton
- ImageView
而是使用.该ImageView
仍可事件发送到OnClickListener
并不会接管的焦点.
最好的方法是:
android:focusable="false"
android:focusableInTouchMode="false"
Run Code Online (Sandbox Code Playgroud)
为此设置这些属性Imagebutton
并尝试.一世