如何链接2片段都有listview



我需要你的帮助。我已经工作了2天,仍然对碎片感到困惑。

我的目标是创建一个包含listview的片段。在每一个项目点击,它将显示另一个片段与另一个列表视图(像一个子菜单,但显示在不同的片段)。

这里是Fragment

的代码
public class MasterFragment extends Fragment implements AdapterView.OnItemClickListener {
ListView masterlist;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.master_fragment, container, false);
    masterlist = (ListView) view.findViewById(R.id.masterlistview);
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.masterlist, android.R.layout.simple_list_item_1);
    masterlist.setAdapter(adapter);
    masterlist.setOnItemClickListener(this);
    return view;
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    long position = masterlist.getItemIdAtPosition(i);
    if(position == 0){
        System.out.println("Item 0");
    } else {
        System.out.println("Item 1");
    }
}

在我的onItemClick,我怎么能调用片段。我有2个片段与列表视图,但有不同的数组在他们。比如如果position == 0,调用FragmentA。否则,调用FragmentB。

我已经创建了一个接口在我的MasterFragment

public interface Communicator {
    void respond(int index);
}

然后实现它在我的MainActivity..但是我不知道怎么做

创建回调接口。在fragment被调用的活动中实现这个接口。使用回调方法单击片段发送位置中的项目。然后调用关于position

的片段

你的片段应该是这样的

public class MasterFragment extends Fragment implements AdapterView.OnItemClickListener {
public inteface OnItemClickResponse
{
    void itemClick ( int position);
}
OnItemClickResponse itemClickResponse;
ListView masterlist;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.master_fragment, container, false);
    masterlist = (ListView) view.findViewById(R.id.masterlistview);
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.masterlist, android.R.layout.simple_list_item_1);
    masterlist.setAdapter(adapter);
    masterlist.setOnItemClickListener(this);
    itemClickResponse = (OnItemClickResponse) getActivity();
    return view;
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
    long position = masterlist.getItemIdAtPosition(i);
    if (position == 0) {
        itemClickResponse.itemClick(position);
        System.out.println("Item 0");
    } else {
        itemClickResponse.itemClick(position);
        System.out.println("Item 1");
    }
}

和在活动(必须实现接口'OnItemClickResponse')

@Override
public void itemClick(int position) {
    if (position == 1) {
        Fragment fragment = new FirstFragment();
        getSupportFragmentManager().beginTransaction()
                .replace(android.R.id.content, fragment).commit();
    } else {
        Fragment fragment = new SecondFragment();
        getSupportFragmentManager().beginTransaction()
                .replace(android.R.id.content, fragment).commit();
    }
}
if(position == 0){
 Fragment newFragment = new FragmemtA();
 FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();      
 fragmentTransaction.replace(R.id.container, newFragment).addToBackStack(null).commit();
 }
else
{
 Fragment newFragment = new FragmemtB();
 FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();  
 fragmentTransaction.replace(R.id.container, newFragment).addToBackStack(null).commit();
 }

最新更新