java-Android-将值从ListFragment传递到另一个ListFragment

我有一个包含项目类别的列表视图.当我在列表上按类别标题时,它将显示一个包含所选类别内项目的列表视图.

我正在通过使用ListFragment.我是否必须启动一个新活动并按意图一起传递类别ID?

这是我的类别的ListFragment:

public class CategoryFragment extends ListFragment implements
        OnItemClickListener {

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
       getListView().setonItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        // what to do here 
    }
}

我要在onItemClick中添加什么以转到“项目列表”?我需要使用另一个ListFragment还是仅使用常规ListActivity?

如何从解析的JSON检索类别ID并将其传递给列表项?

编辑:我使用Volley解析JSON.我正在考虑在布局中为类别ID创建一个不可见的TextView,以便可以从那里拉出它.那可能吗?

解决方法:

让您的FragmentActivity实现一个具有categorySelected(int categoryId)方法的接口.

在CategoryOverviewFragment内,当您选择一个类别时,您将其称为:

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    ((CategorySelectedListener)getActivity()).categorySelected(i);
}

然后,在活动中实现categorySelected并将总览片段替换为CategoryFragment.

创建类别片段时,将类别ID设置为参数.最好使用newInstance pattern设置setArguments().

要将类别概述列表片段替换为类别详细信息片段,请使用FragmentManagerbeginTransaction(),然后选择replace().

假设类别概述片段是动态添加的,而不是在XML中使用如下代码

CategoryFragment newFragment = CategoryFragment.newInstance(categoryIdSelected);
FragmentTransaction transaction = getFragmentManager().beginTransaction();

transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

transaction.commit();

如果类别列表片段以XML添加,则需要删除该类别并将其更改为FrameLayout,然后在代码中动态添加该片段.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...