android - 如何根据 ListView 上的文本从自定义 ListView 打开不同的布局?

标签 android custom-lists

enter image description here 我有一个自定义 ListView ,它的 onItemClick 方法在下面

if (bean.getResType().equals("Music"))
{
    ListView listView;
    View view = getView();
    if (view != null) {
        listView = (ListView) view.findViewById(R.id.list4);


        CustomListViewAdapterMindMaps adapter = new CustomListViewAdapter(getContext(),
                R.layout.list, mList);
        listView.setAdapter(adapter);


        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {


                Intent intent = new Intent(getContext(), Main_Activity_For_Music.class);


                //start the second activity
                startActivity(intent);

            }


        });
    }else  if (bean.getResType().equals("Video")) {

            ListView listView2;
            View view2 = getView();
            if (view2 != null) {

                listView2 = (ListView) view.findViewById(R.id.list4);


                CustomListViewAdapter adapter = new CustomListViewAdapter(getContext(),
                        R.layout.list, mList);
                listView2.setAdapter(adapter);


                listView2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) {




                           Intent intent = new Intent(getActivity(), Main_Activity_For_Video.class);

                            startActivity(intent);

                    }


                });

            }

在此 ListView 中,我显示了不同类型的列表项,例如音乐和视频。 因此,如果用户按下音乐项目,它会打开一个新布局,如果选择视频,它会打开视频布局。但无论我选择什么,它总是会打开第一个布局,例如音乐布局。

最佳答案

String resource;
resource =  bean.getResType();

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> parent, View view,
                                                    int position, long id) {

                                if(resource.equals("Music"){
                                Intent intent1 = new Intent(getContext(), Main_Activity_For_Music.class);


                                //start the second activity
                                startActivity(intent1);
                               }else if(resource.equals("Video")
                                {
                                     Intent intent2 = new Intent(getActivity(), Main_Activity_For_Video.class);

                                        startActivity(intent2);
                                 }

                            }

或者你也可以使用 switch case

switch(bean.getResType()){
case "Music":
Intent intent1 = new Intent(getContext(), Main_Activity_For_Music.class);


                                    //start the second activity
                                    startActivity(intent1);
break;
case "Video":
Intent intent2 = new Intent(getContext(), Main_Activity_For_Video.class);


                                    //start the second activity
                                    startActivity(intent1);
break;

}

关于android - 如何根据 ListView 上的文本从自定义 ListView 打开不同的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37071240/

相关文章:

android - 如何获取自定义 ListView 的选定行的子行的 rowID?

Android.Views.ViewStates.Gone 在 CustomListAdapter 中导致不可预测的结果

javascript - 如何使用 Jquery 分割动态列表取决于多个元素?

android - 何时以及如何防止 Android 中的上帝 Activity

android - res.getIdentifier - 查找包名

java - 为什么在 Kotlin 中 Room 的 @Database 获取实体为 arrayOf,而 Java 不获取数组?

android - 如何使用 Universal Image Loader for Android 加载缩略图?

java - 模拟器停止在 Android Studio 上工作 无法加载 memtrack 模块

c# - 对字符串中存在特定字符的列表进行排序

java - 使用一个属性在自定义列表中查找对象的 indexOf