我正在Android中使用自定义ListView
,并且一切正常,可以将数据提取到列表中。之前的click事件可以正常使用,但是当我在litst_view_item.xml文件中应用具有自定义背景的自定义TextView
和LinerLayout
时,它的click事件现在无法正常工作,请帮助我。如何删除此错误?
我尝试了所有代码示例,如:
android:focusable="false"
android:focusableInTouchMode="false"
在list_view_item.xml中的每个布局项目中(甚至在linearlayout中)
和
android:descendantFocusability="blocksDescendants"
在listview_activity.xml文件中
在listview属性及其父级LinearLayout.xml中
[如果有人知道这个问题,请帮助我
从listview_activity.xml中删除android:descendantFocusability =“ blocksDescendants”,并将其添加到list_view_item.xml的顶级布局中。
尝试使用自定义listView Adapter,然后将onClick侦听器添加到视图布局中,如下所示:
public listviewAdapter(Activity activity, ArrayList<String> list) {
this.activity = activity;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private class ViewHolder {
LinearLayout linearLayout;
TextView txtview;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
LayoutInflater inflater = activity.getLayoutInflater();
if (convertView == null){
convertView = inflater.inflate(R.layout.listview_row, null);
holder = new ViewHolder();
holder.txtview = (TextView) convertView.findViewById(R.id.txtview);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
holder.txtview.setText(list.get(position));
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
}}
并且在onCreate中,您需要将适配器设置为列表:
listviewAdapter adapter = new listviewAdapter(ActivityName.this, list);
listView.setAdapter(adapter);
这样,您将不需要为列表设置OnItemSelectedListener。
将其应用于list_view_item.xml
中的ParentLayout而不是ListView属性内或ListView活动中的任何位置,并且如果您在parentAttribute中使用focusinTouchmode
,则无需使用blocksDescendants
。
android:descendantFocusability="blocksDescendants"