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

时间:2014-12-09 08:33:20

标签: java android listview android-fragments android-listview

假设某个应用首先使用自定义适配器列出ListView第一Fragment中的所有帖子。并且自定义适配器数据为ArrayList<Hashmap<String,String>>

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

enter image description here问题:

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

然后,如果用户点击此帖并转到单个帖子活动(第3个),则用户可以看到类似按钮,并且可以喜欢此帖子(第4个)。

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

处理此问题的最佳策略是什么? :)

3 个答案:

答案 0 :(得分:1)

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

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

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

欺骗在模型形成和回调之间。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

第一个(单个帖子活动)问题可以通过在类别列表数据集(ArrayList.get(i).addLike或任何你用来添加喜欢的东西)中添加like来轻松解决,然后调用

adapter.notifyDatasetChanged();

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

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

例如,如果第二个列表(类别?)现在在单个帖子活动中显示帖子且其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();