【问题标题】:ERROR - How to set setOnItemClickListener to listView?错误 - 如何将 setOnItemClickListener 设置为 listView?
【发布时间】:2015-01-29 12:21:58
【问题描述】:

我正在尝试将 setOnItemClickListener 方法设置为 listview 但它报告错误

代码

//*******///

public class ViewAdapter extends BaseAdapter
    {

        LayoutInflater mInflater;

        public ViewAdapter ()
        {
            mInflater = LayoutInflater.from(context);
        }

        @Override
        public int getCount ()
        {
            return favoriteList.size();
        }

        @Override
        public Object getItem (int position)
        {
            return null;
        }

        @Override
        public long getItemId (int position)
        {
            return position;
        }

        @Override
        public View getView (final int position, View convertView, ViewGroup parent)
        {
            if (convertView == null)
            {
                convertView = mInflater.inflate(R.layout.itemlista, null);
            }

            final TextView infraText = (TextView) convertView.findViewById(R.id.tv_infra);
            infraText.setText(favoriteList.get(position).getInfraccion());

            final TextView ageText = (TextView) convertView.findViewById(R.id.matricula);
            ageText.setText(favoriteList.get(position).getMatricula());

            final TextView fechaText = (TextView) convertView.findViewById(R.id.tv_dia);
            fechaText.setText(favoriteList.get(position).getFecha());

            final TextView horaText = (TextView) convertView.findViewById(R.id.tv_hora);
            horaText.setText(favoriteList.get(position).getHora());

            final TextView tipoinfraText = (TextView) convertView.findViewById(R.id.tv_tipo);
            tipoinfraText.setText(favoriteList.get(position).getTipoinfra());

            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                public void onItemClick(AdapterView<?> arg0,
                                        View arg1, int position, long arg3)
                {
                    Toast.makeText(InciEnviadasActivity.this, "posicion:" + position, Toast.LENGTH_LONG).show();
                }
            });

            return convertView;
        }

    }

创建时//

//******//
//list = (Button) findViewById(R.id.list);
        list =(ImageView) findViewById(R.id.list);
        list.setOnClickListener(listOnClick);
        listView = (ListView) findViewById(R.id.listView);
        db = new BBDD(this, "BBDD", null, 1);
        ;

        View.OnClickListener listOnClick = new OnClickListener()
        {
            @Override
            public void onClick (View v)
            {
                favoriteList = db.getFavList();
                listView.setAdapter(new ViewAdapter());

            }
        };

        //list = (Button) findViewById(R.id.list);
        list.setOnClickListener(listOnClick);
        listView = (ListView) findViewById(R.id.listView);
        db = new BBDD(this, "BBDD", null, 1);
        ;


//******/

我做错了什么?有什么解决建议吗?

顺便说一下,我从内部 SQlite 数据库中填充 ListView。

更新:已解决,我混淆了名称列表视图,我试图将方法分配给图像视图,非常抱歉

【问题讨论】:

  • 我们需要您的 Logcat 输出
  • 既然您解决了这个问题,您能否将本地主机的答案(第一个找到原因的答案,或您喜欢的任何其他答案)标记为已接受,以便将问题标记为已回答?在此先感谢 ;-)
  • 当然要等4分钟才能接受。

标签: android listview android-studio


【解决方案1】:

您尝试将setOnItemClickListener 转为ImageView

应该是listView.setOnItemClickListener...

【讨论】:

  • 天哪……我把名字弄糊涂了……我是个白痴,我很乐意尝试修复它,有时最愚蠢的错误是最糟糕的
【解决方案2】:

list 是一个ImageView,而ImageView 没有setOnItemClickListener

在您的适配器的getView 中设置一个新的适配器也是不正确的,在您的Activity 中只设置一次。在onClick方法中设置一个新的适配器也是如此,这不是一个好主意。

【讨论】:

  • 或者只是累了,不要自责,每个人都会犯错;)请注意我多次设置适配器的言论,这不是一个好主意,最好更新每次要更新列表时适配器的内容。你需要帮助吗?
  • 在 Google 中查找“更新适配器内容”。这个答案显示了基础知识:stackoverflow.com/questions/4903758/…。由于您的适配器是基于 List 的,您可以考虑将其类型更改为 ArrayAdapter(BaseAdapter 的便捷实现),它具有 add/addAll/remove 方法,就像 List 一样。调用方法直接从适配器中清除/添加/删除项目,当内容更新时,调用 notifyDataSetChanged 通知适配器 ListView 需要更新。这样您就不需要自己维护项目列表。
猜你喜欢
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
相关资源
最近更新 更多