【问题标题】:How to open different layouts from a custom list view depending on the text on the list view?如何根据列表视图上的文本从自定义列表视图中打开不同的布局?
【发布时间】:2016-05-06 11:27:53
【问题描述】:

我有一个自定义列表视图,它的 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);

                    }


                });

            }

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

【问题讨论】:

  • 使用 Switch 使用一些标签的情况。

标签: android custom-lists


【解决方案1】:
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;

}

【讨论】:

  • 不,实际上问题是位置 0 不一定总是音乐或视频。列表视图包含一长串音乐和视频。@Saurabh
  • if (bean.getResType().equals("Video"))我已经写了但是不行@Saurabh 看我的代码
  • @ShwetabhSingh..我已经更新了我的答案并让资源在全球范围内受到影响
【解决方案2】:
 listView2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> parent, View view,
                                                    int position, long id) {

you need 

getItemAtPosition(position); 



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

                                    startActivity(intent);

                            }

【讨论】:

    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    相关资源
    最近更新 更多