【问题标题】:Inflating views on listview item膨胀列表视图项目的视图
【发布时间】:2018-02-13 09:31:48
【问题描述】:

我有一个列表视图。我在该列表视图中实现的是,当用户单击列表项时,会膨胀 2 个按钮视图以替换该列表项的内容,如下所示:

这很好用,但我想要的是当我单击第二个列表项时,第一个应该回到原来的布局。目前是这样的:

这是我在listview的onClick方法中实现的代码:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                TextView planName = view.findViewById(R.id.planNameText);
                TextView planDate = view.findViewById(R.id.planDateText);
                ImageView planImage = view.findViewById(R.id.homePlanImageView);
                planName.setVisibility(View.INVISIBLE);
                planDate.setVisibility(View.INVISIBLE);
                planImage.setVisibility(View.INVISIBLE);
                RelativeLayout rl_inflate = (RelativeLayout)view.findViewById(R.id.rl_inflate);
                View child = getLayoutInflater().inflate(R.layout.inflate, null);
                rl_inflate.addView(child);

        }
    });

谢谢。

【问题讨论】:

  • 在我看来,将滑动视图添加到您的列表视图会更好

标签: android listview


【解决方案1】:

也许你需要初始化一个 boolean 变量来检查是否被点击并刷新所有视图。我真的建议您使用 RecyclerView 并使用 2 个 viewHolders。如果您想了解有关此检查的信息this。如果你实现一个带有 2 个 viewholder 的回收器,它会比你想要实现它的方式更容易,你可以使用 notifyDataSetChanged 来刷新回收器。不管怎样,你无论如何都需要一个布尔值来检查是否被点击。

【讨论】:

  • 我在我的活动中实现了这个,所以我可能需要在我的列表视图的 setOnItemClickListener 方法中刷新活动。我说的对吗?
  • 是的。您必须在您的活动上实施 notifyDataSetChanged。它就像适配器。 notifyDataSetChanged();这将使用新数据刷新您的列表视图。您还必须 clear() 适配器或只实现另一个。
猜你喜欢
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多