Android 单击每个listview项时,使用listview打开一个新的不同片段

Android 单击每个listview项时,使用listview打开一个新的不同片段,android,android-layout,listview,android-fragments,Android,Android Layout,Listview,Android Fragments,我按照这个youtube教程创建了一个配方应用程序(导航抽屉和带有列表视图的片段) 并成功实施。与单击导航抽屉菜单类似,它将显示带有listview的新片段(Veg,非Veg)。当单击每个项目(Veg)时,它将在toast(Veg)中显示列表项目名称 但我的应用程序概念是 因此,当单击每个listview项时,我需要使用listview打开一个新的不同片段。怎么做 在我的代码中,当我单击每个列表项时,它将显示相同的片段。我需要为每个项目显示不同的片段。 请检查我的密码。帮帮我 这是Home.ja

我按照这个youtube教程创建了一个配方应用程序(导航抽屉和带有列表视图的片段) 并成功实施。与单击导航抽屉菜单类似,它将显示带有listview的新片段(Veg,非Veg)。当单击每个项目(Veg)时,它将在toast(Veg)中显示列表项目名称

但我的应用程序概念是

因此,当单击每个listview项时,我需要使用listview打开一个新的不同片段。怎么做

在我的代码中,当我单击每个列表项时,它将显示相同的片段。我需要为每个项目显示不同的片段。 请检查我的密码。帮帮我

这是Home.java(片段)

导入android.app.Fragment;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.text.Layout;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
公共类家庭扩展片段{
私有ListView lv;
私有静态字符串[]spacecrafts={“Non-Veg”,“Veg”};
公共静态Home newInstance()
{
家=新家();
回家;
}
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气机充气(R.layout.home,空);
lv=(ListView)rootView.findViewById(R.id.home\u lv);
lv.setAdapter(新的ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,spacecrafts));
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
//Toast.makeText(getActivity(),spacecrafts[i],Toast.LENGTH_SHORT).show();
Home.this.getFragmentManager().beginTransaction().replace(R.id.containerID,Veg.newInstance()).commit();
}
});
返回rootView;
}
@凌驾
公共字符串toString(){
返回“家”;
}
}
这是Veg.java片段

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class Home extends Fragment {
    private ListView lv;
    private static String[] spacecrafts = {"Non-Veg", "Veg"};

    public static Home newInstance()
    {
        Home home =new Home();
        return home;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View rootView=inflater.inflate(R.layout.home, null);

        lv = (ListView) rootView.findViewById(R.id.home_lv);

        lv.setAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, spacecrafts));

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l){
                //Toast.makeText(getActivity(), spacecrafts[i], Toast.LENGTH_SHORT).show();
                Home.this.getFragmentManager().beginTransaction().replace(R.id.containerID, Veg.newInstance()).commit();
            }
         });
        return rootView;
    }

    @Override
    public String toString(){
        return "Home";
    }
}
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class Veg extends Fragment {
    private ListView lv;
    private static String[] vegcat = {"Vegetables", "Fruits"};

    public static Veg newInstance()
    {
        Veg veg =new Veg();
        return veg;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View rootView=inflater.inflate(R.layout.veg, null);

        lv = (ListView) rootView.findViewById(R.id.veg_lv);

        lv.setAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, vegcat));

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l){
                Toast.makeText(getActivity(), vegcat[i], Toast.LENGTH_SHORT).show();
            }
        });
        return rootView;
    }

}
导入android.app.Fragment;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
公共类Veg扩展片段{
私有ListView lv;
私有静态字符串[]vegcat={“蔬菜”、“水果”};
publicstaticvegnewinstance()
{
Veg Veg=新的Veg();
回归蔬菜;
}
@可空
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根视图=充气机。充气(R.layout.veg,null);
lv=(ListView)rootView.findviewbyd(R.id.veg\u lv);
lv.setAdapter(新的ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,vegcat));
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
Toast.makeText(getActivity(),vegcat[i],Toast.LENGTH_SHORT).show();
}
});
返回rootView;
}
}
这是veg.xml布局代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/veg_lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

这是获取
列表视图项单击事件的代码。
因此,无论你想实现什么,你都可以在这里实现

lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l){
            // Do your checks here based on the position of item click.
        }
     });

创建三个单独的片段

1.1.1.1.1

2.无碎片

3.描述片段

现在,在您的主片段的列表视图中,单击用另一个片段替换主片段(素食者或非素食者列表)。 单击listview中的veg或NONOVEG菜单项后,将当前替换为包含描述数据的描述片段(描述片段)

替换片段的代码如下所示:

VegFragment finalFragment = new VegFragment(); 
         FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                            fragmentTransaction.replace(R.id.flContainer, finalFragment);
                            fragmentTransaction.commit();

更好的答案是,若你们将片段添加到后堆栈中
VegFragment finalFragment = new VegFragment(); 
         FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                            fragmentTransaction.replace(R.id.flContainer, finalFragment);
                            fragmentTransaction.commit();