【问题标题】:Pass ArrayList Item from one Fragment to another one将 ArrayList 项从一个 Fragment 传递到另一个 Fragment
【发布时间】:2016-09-19 00:21:12
【问题描述】:

我在这里需要帮助。

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

因此,将 ListView 中的 Item 复制到另一个 Fragment 中的另一个 ListView。

我正在使用通用片段的适配器来填充项目。

ListView 项上的变量只是一个 TextView(Title) 和一个 ImageView(Poster)

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

这是从接口使用的 Main Activity 方法: enter image description here

【问题讨论】:

  • 阅读实现接口。您可以通过此将列表项的详细信息从“常规”传递到“收藏夹”。
  • 通过意图将数据作为数组列表传递应该可以工作。
  • 使用 Parceable:developer.android.com/reference/android/os/Parcelable.html。使自定义类实现可解析并在 Bundle 中传递数组列表。

标签: android listview android-fragments fragment


【解决方案1】:

这样接收列表,然后放入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 ;
}

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

    在 General 列表中,用 isFavorite 填充列表为 false(如果您不想在该列表中显示最喜欢的项目),并在最喜欢的列表中填充 isFavorite 设置为 true 的列表。

    同样,您可以从收藏列表切换到一般列表。

    【讨论】:

    • 由于我是 Android 新手,您认为您可以通过编写代码来帮助我吗?我将不胜感激,谢谢。
    • 你能发一些初稿吗?我可以帮你。
    猜你喜欢
    • 2021-02-19
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多