使用适配器中的不同数据更新不同ListView中的常用post

假设应用程序首先使用自定义适配器列出Fragment1st )中ListView中的所有post。 并且该自定义适配器数据是ArrayList<Hashmap>

然后用户可以转到另一个片段,例如类别片段( 第2个 ),我们有另一个列表视图和不同的数据。 我们使用后台堆栈进行分段,用户可以通过单击后退按钮返回到prev片段。

在此处输入图像描述 问题:

在这些片段中,一些post可能很常见! 像附加图像一样,在第一张图片中,我们可以看到所有post列表中的post,当点击类别并转到类别片段时,我们可以再次看到该post。

然后,如果用户点击这个post并进入单个post活动( 第3个 ),用户可以看到像按钮,可以喜欢这篇文章( 第4个 )。

到现在为止,每件事都行! 但是当用户点击后退按钮时会发生麻烦! 第一个用户转到类别片段( 第5个 ),我们应该在列表视图上显示像按钮一样的按钮。 如果用户进一步回到所有post,我们应该喜欢该列表视图中的按钮,因为它也是! ( 第6

什么是处理这个问题的最佳策略? 🙂

您可以创建数据绑定模型到列表视图,并使用该数据填充列表视图。

要像执行类似按钮一样执行后续操作,您可以使用广播接收器(本地),或者可以使用tinyBus或otto为任何类型的事件进行回调 。

获得回调后,只需通知片段中的特定列表。

诡计在模型形成和回调之间。

您可以使用transaction.addToBackStack(null)显式强制不将后退按钮状态添加到后台堆栈。 然后,您可以覆盖后退按钮(在onBackPressed() )并插入您需要的任何行为。 我不确定我是否遵循了上述所有内容,但我认为这个组合将解决您解决的基本问题。

第一个(单个post活动)问题可以通过将类似的数据添加到类别列表数据集(ArrayList.get(i).addLike或任何你用来添加喜欢的东西)然后调用

 adapter.notifyDatasetChanged(); 

这将使您的第二个列表使用新内容(您刚刚更改)自行更新

所以现在问题是第一个列表。 据我所知,我们有2个包含相同项目的列表,(至少我想相信,因为它的post类型的元素)有它自己的唯一ID,或许尝试循环搜索该元素的第一个列表?

例如,如果第二个列表(类别?)现在在单个post活动中显示post并且其ID为5.当更改喜欢的数量时尝试如下:

 //First we change the second list item which is the first one on the backstack & we know it's position on the list CategoryList.get(currentPost).addLike(); //Then we loop the first list to find the same post from the second list on it for(int i = 0; i < MainList.size(); i++) { if(MainList.get(i).getID == CategoryList.get(currentPost).getID) { //Add the like on the first list MainList.get(i).addLike(); break; } } //Call update on the adapters MainListAdapter.notifyDatasetChanged(); SecondListAdapter.notifyDatasetChanged();