我正在创建一个在ListView中显示数据的应用。数据分为两种类型(热门,收藏)。我有一个活动和两个碎片。片段根据类别显示项目列表。我使用了ListView。然后,我有两个fragment_layout,它们在设计上完全相同,但具有不同的视图ID,即用于TextViews的tvId1,tvId2。片段中的代码仅在引用布局中的相应布局和视图时有所不同。我从一个JSON格式的URL中获取数据。但是每个类别都有一组不同的URL,它们只产生不同数据的相同结构。然后我解析每个片段上的相应URL并相应地填充ListView。一切都运作到目前为止。
我想知道的是,有没有一种方法可以使用一个片段并使用两次,每种片段使用不同的数据集?这样,如果出现新类别,我不必创建另一个片段。
感谢任何帮助。
答案 0 :(得分: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;
}
然后你可以使用下面的方法获取onCreate()方法的类型:
getArguments().getInt("type");
然后你得到了类型,你可以相应地调用你的web服务,然后你可以相应地设置Views
。