Android ListView ClickEvent不起作用

问题描述 投票:0回答:3

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

我尝试了所有代码示例,如:

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

在list_view_item.xml中的每个布局项目中(甚至在linearlayout中)

android:descendantFocusability="blocksDescendants"

在listview_activity.xml文件中

在listview属性及其父级LinearLayout.xml中

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

android xml android-layout listview android-listview
3个回答
0
投票

从listview_activity.xml中删除android:descendantFocusability =“ blocksDescendants”,并将其添加到list_view_item.xml的顶级布局中。


0
投票

尝试使用自定义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。


0
投票

将其应用于list_view_item.xml中的ParentLayout而不是ListView属性内或ListView活动中的任何位置,并且如果您在parentAttribute中使用focusinTouchmode,则无需使用blocksDescendants

android:descendantFocusability="blocksDescendants"
© www.soinside.com 2019 - 2024. All rights reserved.