Android - 多次实例化片段?

use*_*412 8 android fragment

我正在创建一个在ListView中显示数据的应用程序.数据分为两种类型(热门,收藏).我有一个活动和两个碎片.片段根据类别显示项目列表.我使用了ListView.然后,我有两个fragment_layout,它们在设计上完全相同,但具有不同的视图ID,即用于TextViews的tvId1,tvId2.片段中的代码仅在引用布局中的相应布局和视图时有所不同.我从一个JSON格式的URL中获取数据.但是每个类别都有一组不同的URL,它们只产生不同数据的相同结构.然后我解析每个片段上的相应URL并相应地填充ListView.到目前为止一切都有效.

我想知道的是,有没有一种方法可以使用一个片段并使用两次,每个片段使用不同的数据集?这样,如果出现新类别,我不必创建另一个片段.

感谢任何帮助.

tas*_*iac 11

当然可以.事实上你应该这样做.

在创建片段时,请不要使用new Fragment(); 创建以数据作为参数的静态newInstance函数.

public static MyFragment newInstance(int type) {
    MyFragment fragment = new MyFragment();
    Bundle args = new Bundle();
    args.putInt("type", type);
    fragment.setArguments(args);
    return fragment;
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用下面的onCreate()方法得到类型:

getArguments().getInt("type");
Run Code Online (Sandbox Code Playgroud)

然后你得到类型,你可以相应地调用你的webservice,然后你可以相应地设置Views.