将ArrayList项从一个Fragment传递到另一个Fragment

时间:2016-09-19 00:21:12

标签: android listview android-fragments fragment

我需要帮助。

所以我正在构建一个包含两个片段的Android应用。 (一般和收藏) General Fragments有一个项目列表,这些项目上有一个Star,所以我想要做的是当用户点击ListView项目的Star时,该项目将显示在收藏夹片段的Lis​​tView中。

因此将项目从ListView复制到另一个片段中的另一个ListView。

我正在使用General Fragment的适配器来填充项目。

ListView项目上的变量只是一个TextView(标题)和一个ImageView(海报)

这是MainActivity类,其中接口实现,我使用底部导航抽屉,在不同的片段之间切换。接口方法就在最后。

以下是界面使用的主要活动方法: enter image description here

3 个答案:

答案 0 :(得分:2)

接收这样的列表然后将其放入listview

ArrayList<GroupListDetail> results;
try {
        results = (ArrayList<GroupListDetail>) getIntent()
                .getSerializableExtra("mylist");
    } catch (Exception e) {

    }


if ((results != null) && results.size() > 0) {
        listView.setAdapter(new GroupListAdapter(this, results));
    }

像这样添加并传递列表

myList = new ArrayList<GroupListDetail>();
for(int a = 0; a<myList2.size();a++)
{
 GroupListDetail gld = new GroupListDetail();
 gld.setItem_ID(myList2.get(a).getItem_ID());
 myList.add(gld);
}

    Intent i = new Intent(GroupList.this, Gscanner.class);
            if ((results != null) && results.size() > 0) {
                i.putExtra("mylist", results);
            }

Details.java

@SuppressWarnings("serial")
public class GroupListDetail implements Serializable{

     public String getItem_ID() {
     return Item_ID;
     }
     public void setItem_ID(String Item_ID) {
     this.Item_ID = Item_ID;
     }
     private String Item_ID ;
}

答案 1 :(得分:0)

您可以使用BroadCastEventBus。这是link of EventBus。在我看来,EventBus更容易使用。

答案 2 :(得分:0)

您可以使用相同的适配器填充“常规”和“收藏夹列表片段”上的列表。您可以使用枚举模式{General,Favorite} 显示相应的列表。

每个列表项都可以有一个布尔标志(isFavorite)。 最初,您可以将isFavorite的值设为false。

在一般列表的OnClickItem侦听器中,只需将该标志切换为特定项的true。

在“常规”列表中,使用isFavorite填充列表为false(如果您不想在该列表中显示收藏项目),并在“收藏夹”列表中填充isFavorite设置为true的列表。

同样,您可以从收藏列表切换到常规列表。