Android ListView ClickEvent不起作用

时间:2015-09-22 11:46:58

标签: android xml android-layout listview android-listview

我在Android中使用自定义ListView,一切正常,将数据提取到列表中。之前点击事件正常,但当我在litst_view_item.xml文件中应用自定义TextViewLinerLayout自定义背景时,其点击事件现在无法正常工作,请帮助我。 如何删除此错误?

我尝试了所有代码示例:

android:focusable="false"
android:focusableInTouchMode="false"

在list_view_item.xml中的每个布局项中(即使在linearlayout中)

android:descendantFocusability="blocksDescendants"
listview_activity.xml文件中的

listview属性中的

及其父LinearLayout.xml

如果有人知道这个问题,请帮帮我

3 个答案:

答案 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。