Android 单击列表视图项以在单独的活动中显示另一个列表视图 我创建了listview,如下所示 您可以看到listview\u array[]包含Test,Category1 和类别2

Android 单击列表视图项以在单独的活动中显示另一个列表视图 我创建了listview,如下所示 您可以看到listview\u array[]包含Test,Category1 和类别2,android,android-intent,android-listview,Android,Android Intent,Android Listview,ListActivity.java: package com.steph.listview; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.

ListActivity.java:

package com.steph.listview;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListActivity extends Activity {
    private ListView lv;
    private String listview_array[] = { "Test", "Category1", "Category2", "Category3"};

    public void onCreate(Bundle icicle)

    {
        super.onCreate(icicle);
        setContentView(R.layout.list1);
        lv = (ListView) findViewById(R.id.listview);
        lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, listview_array));
        lv.setTextFilterEnabled(true);
        lv.setOnItemClickListener(new OnItemClickListener() {

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


            }


        });
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
package com.steph.listview;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类ListActivity扩展了活动{
私有ListView lv;
私有字符串listview_数组[]={“Test”、“Category1”、“Category2”、“Category3”};
创建公共空间(捆绑冰柱)
{
超级冰柱;
setContentView(R.layout.list1);
lv=(ListView)findViewById(R.id.ListView);
lv.setAdapter(新阵列适配器),
android.R.layout.simple_list_item_1,listview_array));
lv.setTextFilterEnabled(真);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
}
});
}
}
list1.xml:

package com.steph.listview;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListActivity extends Activity {
    private ListView lv;
    private String listview_array[] = { "Test", "Category1", "Category2", "Category3"};

    public void onCreate(Bundle icicle)

    {
        super.onCreate(icicle);
        setContentView(R.layout.list1);
        lv = (ListView) findViewById(R.id.listview);
        lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, listview_array));
        lv.setTextFilterEnabled(true);
        lv.setOnItemClickListener(new OnItemClickListener() {

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


            }


        });
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

输出:

package com.steph.listview;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListActivity extends Activity {
    private ListView lv;
    private String listview_array[] = { "Test", "Category1", "Category2", "Category3"};

    public void onCreate(Bundle icicle)

    {
        super.onCreate(icicle);
        setContentView(R.layout.list1);
        lv = (ListView) findViewById(R.id.listview);
        lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, listview_array));
        lv.setTextFilterEnabled(true);
        lv.setOnItemClickListener(new OnItemClickListener() {

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


            }


        });
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

  • 我的问题是,如果我在ListView中单击
    Test
    ,则必须在新的ListView中显示以下名称:Test1、Test2和Test3

  • 然后,如果我单击ListView中的
    类别1
    ,则必须在新的ListView中显示以下名称:Video1、Video2和Video3

  • 然后,如果我单击ListView中的
    类别2
    在新的列表视图中显示:Audio1、Audio2和Audio3

  • 我不知道该怎么办。我可以再创建一个三个独立的 用于测试的类,Category1和Category2。然后我需要使用 意图

  • 但我的问题是我怎样才能在一节课上做到这一点。如果你有任何建议,请帮助我。谢谢


如果您需要根据您的位置加载项目,则无需创建不同的类。单个类就足够了

    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View arg1, int position,
                long arg3) 
            {
            String list_item=(String) parent.getItemAtPosition(position);

                Intent intent=new Intent(this,IntentListActivity.class);
                intent.putExtra("List_item",list_item);
                startActivity(intent);

            }
    });
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图arg1、整型位置、,
长arg3)
{
String list_item=(字符串)parent.getItemAtPosition(位置);
Intent Intent=新的Intent(这是IntentListActivity.class);
意向。额外(“列表项”,列表项);
星触觉(意向);
}
});
IntentListactivity.java

package com.steph.listview;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class IntentListactivity extends Activity {
    private ListView lv;

               String[]  test_array={"test1","test2","test3"};
                 String[] video_array={"Video1","video2","video3"};

    public void onCreate(Bundle icicle)

    {
        super.onCreate(icicle);
        setContentView(R.layout.list1);
        lv = (ListView) findViewById(R.id.listview);
        Intent intent = getIntent();
        String list_value = (String) intent.getSerializableExtra("List_item");
        if("Test".equals("list_value"))
         {
          lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, test_array));
         }
         else if("Category1".equals("list_value")
         {
             lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, video_array));
         }

        lv.setTextFilterEnabled(true);

    }
}
package com.steph.listview;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类意向性扩展活动{
私有ListView lv;
字符串[]test_数组={“test1”、“test2”、“test3”};
字符串[]video_数组={“Video1”、“video2”、“video3”};
创建公共空间(捆绑冰柱)
{
超级冰柱;
setContentView(R.layout.list1);
lv=(ListView)findViewById(R.id.ListView);
Intent=getIntent();
字符串列表_值=(字符串)intent.getSerializableExtra(“列表_项”);
如果(“测试”。等于(“列表_值”))
{
lv.setAdapter(新阵列适配器),
android.R.layout.simple_list_item_1,test_array));
}
否则,如果(“类别1”。等于(“列表值”)
{
lv.setAdapter(新阵列适配器),
android.R.layout.simple_list_item_1,video_array));
}
lv.setTextFilterEnabled(真);
}
}

虽然我不知道您为什么要在可以重复使用的情况下加载此活动的新实例,但下面是一个您想要的工作示例:

package com.steph.listview;

import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

/**
 * Created by Simon on 14.7.7.
 */

public class ListActivity extends Activity {
    private ListView lv;
    private String[] groupArray = {"Category1", "Category2", "Category3"};
    private String[][] childArray = {{"Test1", "Test2", "Test3"},
            {"Video1", "Video2", "Video3"}, {"Audio1", "Audio2", "Audio3"}};

    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.list1);
        lv = (ListView) findViewById(R.id.listview);

        String[] data = getIntent().getStringArrayExtra("strArray");
        AdapterView.OnItemClickListener clickListener = null;

        // If no data received means this is the first activity
        if (data == null) {
            data = groupArray;
            clickListener = new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    Intent intent = new Intent(ListActivity.this, ListActivity.class);
                    intent.putExtra("strArray", childArray[position]);
                    startActivity(intent);
                }
            };
        }

        ArrayAdapter adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, data);

        lv.setAdapter(adapter);
        lv.setTextFilterEnabled(true);
        lv.setOnItemClickListener(clickListener);

    }
}
package com.steph.listview;
导入android.content.Intent;
导入android.os.Bundle;
导入android.app.Activity;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
/**
*由Simon于14.7.7创建。
*/
公共类ListActivity扩展了活动{
私有ListView lv;
私有字符串[]groupArray={“Category1”、“Category2”、“Category3”};
私有字符串[][]childArray={{{“Test1”、“Test2”、“Test3”},
{“Video1”、“Video2”、“Video3”}、{“Audio1”、“Audio2”、“Audio3”};
创建公共空间(捆绑冰柱){
超级冰柱;
setContentView(R.layout.list1);
lv=(ListView)findViewById(R.id.ListView);
String[]data=getIntent().getStringArrayExtra(“strArray”);
AdapterView.OnItemClickListener clickListener=null;
//如果未收到数据,则表示这是第一个活动
如果(数据==null){
数据=组数组;
clickListener=newAdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
意向意向=新意向(ListActivity.this,ListActivity.class);
intent.putExtra(“strArray”,childArray[位置]);
星触觉(意向);
}
};
}
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,数据);
低压设置适配器(适配器);
lv.setTextFilterEnabled(真);
lv.setOnItemClickListener(单击Listener);
}
}

您希望在单击“测试”后,test、category1、Category2被test1、test2和tes替换