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