我在Android中使用自定义ListView
,一切正常,将数据提取到列表中。之前点击事件正常,但当我在litst_view_item.xml文件中应用自定义TextView
和LinerLayout
自定义背景时,其点击事件现在无法正常工作,请帮助我。
如何删除此错误?
我尝试了所有代码示例:
android:focusable="false"
android:focusableInTouchMode="false"
在list_view_item.xml中的每个布局项中(即使在linearlayout中)
和
android:descendantFocusability="blocksDescendants"
listview_activity.xml文件中的listview属性中的
及其父LinearLayout.xml
如果有人知道这个问题,请帮帮我
答案 0 :(得分:0)
将此应用于list_view_item.xml
中的ParentLayout,不在ListView属性内或ListView活动中的任何位置,如果在parentAttribute 中使用focusinTouchmode
,则无需使用blockdescendants
android:descendantFocusability="blocksDescendants"
答案 1 :(得分:0)
从listview_activity.xml中删除android:descendantFocusability =“blocksDescendants”,并将其添加到list_view_item.xml的顶级布局中。
答案 2 :(得分:0)
尝试使用自定义listView适配器,并将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。