【问题标题】:Android enable next Item in a ListViewAndroid 在 ListView 中启用下一个项目
【发布时间】:2020-05-10 10:53:48
【问题描述】:

我在 ListView 中有 N recordsdefault 我希望看到 1st list item 启用 和其他 items 禁用,为了达到同样的效果,我在 Adapter 类的 isEnabled 方法中编写了一个小逻辑,它是 works

@Override
    public boolean isEnabled(int position) {
        if(position == 0)
            return true;
        else
            return false;
    }

一旦用户点击 list item 1(然后我想在列表中启用 item number 2)并且当用户点击 list item 2 (我们刚刚启用,我想启用item number 3

为了实现这一点,我正在使用以下代码行:

int enableIndex = position + 1;
Toast.makeText(getApplicationContext(), String.valueOf(enableIndex), Toast.LENGTH_SHORT).show();
listview.getChildAt(enableIndex).setEnabled(true);

当我点击当前项目时,我可以看到下一个项目的索引,但 无法 使下一个项目启用

【问题讨论】:

  • 请也支持我的问题,因为我已经展示了研究工作,我希望我的问题也有用且清晰......至少我可以加入专家组聊天,一旦我得到一些积分跨度>
  • 您可以尝试在点击启用项目后调用 notifyDataSetChanged 吗?

标签: android listview android-listview


【解决方案1】:

你可以在你的模型类中有一个布尔字段enabled,然后更新它。然后为该特定职位致电notifyItemChanged。类似的东西..

【讨论】:

  • 我使用 ListView 而不是 RecyclerView,因为我在建议的任何地方都看不到 notifyItemChanged
  • 我的意思是调用类似于 listview 的 notifyItemChanged 的​​适当方法..
  • 你的意思是adapter.notifyDataSetChanged();
  • 是的,ListView 的那个
【解决方案2】:

您只需在您的 bindViewHolder fun 上添加 holder.itemView.isEnable=enablePos==position 行。当您单击项目视图时添加以下行。 enablePos=适配器位置+1 notifyItemChanged(enablePos)

【讨论】:

  • 按照您的建议,我在模型类中添加了另一个字段 private boolean isEnabled;但现在不知道该做什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
相关资源
最近更新 更多