Android 在 ListView 中启用下一个项目

Posted

技术标签:

【中文标题】Android 在 ListView 中启用下一个项目【英文标题】:Android enable next Item in a 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 吗? 【参考方案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;但现在不知道该做什么

以上是关于Android 在 ListView 中启用下一个项目的主要内容,如果未能解决你的问题,请参考以下文章

Android - 禁用 ListView 选择突出显示但保持启用 OnClick [重复]

ListView 中的 ImageView 在启用 RecycleElement 的情况下简要显示上一个滚动图像

禁用 ListView 项目单击然后启用它

双向滚动 ListView

在android中定制设计ui一个listview

如何在 Android 中计算 ListView 上的已检查项目