【问题标题】:How to have a checkbox inside of a listview, to have a listener outside adapter activity?如何在列表视图中有一个复选框,在适配器活动之外有一个侦听器?
【发布时间】:2018-05-31 07:51:46
【问题描述】:

所以,我在listviewcheckboxes 中显示了菜单项,供用户选择他喜欢的。我有一个头顶购物车图标,它通过适配器视图中编写的函数跟踪检查项目的数量。

My problem:

当我在OnItemClick listener 中实现了购物车增量功能,然后当我检查一些项目时,它是doesn't get updated,除非我创建了click outside of checkbox(列表视图中的任何其他位置)。

我已尝试根据其他 SO 答案禁用后代可聚焦性并修改可聚焦性。他们还没有解决我的问题。

我的通话活动

adapter = new MenuAdapter(CreateOrder.this,itemslist);
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                          selecteditems = adapter.getSelectedList();
                          Log.e("Selected Items",selecteditems.toString());
                          size = selecteditems.size();
                          qo.setText(String.valueOf(size));
                          Log.e("No of main items ",String.valueOf(size));


            }
        });

【问题讨论】:

  • When I have implemented the cart increment function inside of OnItemClick listener, and then when I check a few items, it doesn't get updated。当然不是。您在复选框的 onClick 中没有更新代码。没有 qo.setText(....);在那里。
  • 有没有办法在 Mainactivity 中获得复选框的 Onclick?
  • 你只要把 qo.setText(....);那里。如果这就是“图标”的意思。
  • 我不明白你。如果我选中复选框,它不会进入 clickListener。即使它更新了我的链表。
  • 我的上帝.. 我之前问过你复选框监听器是否有效。你没有给出答案。现在它不起作用。好吧,先让它工作。 Even though it updates my linkedlist ??如果不调用 onClick 怎么可能?

标签: android listview checkbox onclicklistener onitemclicklistener


【解决方案1】:

checkBoxState = new boolean[linkedList.size()];

你在 getView() 中有那个。因此,对于 getView() 的每次调用,您都会丢弃前者。

在 getView() 中,您使用 checkBoxState[position] 当然是未定义或为空。

因此,将其取出并放入适配器的构造函数中,并像使用该 int 数组一样对其进行初始化。

顺便问一下:你为什么不告诉你的复选框在滚动时没有保持状态?

【讨论】:

  • 谢谢,但是它如何解决我单击列表视图时出现的“复选框未被听取”的问题。
  • 请先告诉我们现在滚动是否正常。如果没有足够的菜单项让用户滚动,那么为测试添加更多内容以测试滚动。
  • 滚动对我来说很好。实际上它确实显示正确。但是我无法在侦听器中动态访问已单击的复选框的计数。即使 onclicklistener 中的函数有效
  • 我的问题不在于复选框和滚动
  • 是的,getView() 复选框中的那一行在滚动时没有保持其状态。不可能。
猜你喜欢
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多