我有一个使用自定义适配器(Adapter
)的ListView
,该适配器以以下方式向ListView
提供View
:
public View getView(int position, View convertView, ViewGroup parent)
{
RelativeLayout.LayoutParams lineParams;
RelativeLayout line=new RelativeLayout(context);
TextView tv=new TextView(context);
tv.setText("Text in postion="+i);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
line.addView(tv, lineParams);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
//checkbox
CheckBox checkBox=new CheckBox(context);
lineParams=new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lineParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lineParams.addRule(RelativeLayout.CENTER_IN_PARENT);
line.addView(checkBox, lineParams);
return line;
}
在ListView
里面有一个setOnItemClickListener()
方法,它应该拦截项目点击事件。我的问题是,每当我尝试将复选框添加到项目中时,ListView
不会响应任何操作。如果我跳过CheckBox
或其他Button
,则正常运作。
我真的被这个问题困扰了,我尝试了各种布局、对齐、换行等方法-都是无用的。看起来CheckBox
干扰了ListView
项目的点击事件。
有什么建议可以解决这个问题吗?
btn.setFocusable(false)
,这解决了问题。我认为Android在加载XML后将focusable
设置为true。 - Sufian