0

現在リストを必要とするプロジェクトを行っています。リストの特定の項目をクリックすると、別のリスト アクティビティが表示されます。あるリストビュー アクティビティから別のリストビュー アクティビティに移動する方法に関する解決策はありますか。現在、ListView のリファレンスとしてhttp://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/を使用しています。

4

2 に答える 2

0

api はExpandableListViewを提供します。あなたの要件はそれに非常に近いようです

于 2012-09-23T11:01:42.710 に答える
0

1つの解決策は次のとおりです。

2 番目の ListView アクティビティを作成し、通常のインテントを使用して 2 番目の ListViewActivity を開く OnItemClickListener で最初の ListActivity を実装します。

    listView = (ListView) findViewById(R.id.mylistview);
        listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View v, int position,
                    long arg3) {

                Intent intent = new Intent(FirstListActivity.this, SecondListActivity.class);
                Bundle bundle = new Bundle();
                bundle.putString("pos", position);
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });

アップデート:

簡単なサンプル リスト アプリケーションを作成しました。インスペクションに使用できます。2 番目のリスト アクティビティを開くコードが含まれていますが、コメント アウトされています。この例を実行すると、さらに近づいています。次に、インテント コードをコメント アウトしてみてください。

package com.adpog.listviewexample;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.app.Activity;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Find the ListView resource.   
        ListView mainListView = (ListView) findViewById( R.id.my_list );  

        // Set the Adapter as the ListView's adapter.  
        mainListView.setAdapter( new BaseAdapter(){

            // Create and populate a List of planet names.  
            String[] planets = new String[] {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune" };    

            @Override
            public int getCount() {
                return planets.length;
            }

            @Override
            public Object getItem(int pos) {
                return planets[pos-1];
            }

            @Override
            public long getItemId(int pos) {
                return 0;
            }

            @Override
            public View getView(int pos, View view, ViewGroup viewgroup) {
                if(view == null){
                    /**
                     <?xml version="1.0" encoding="utf-8"?>
                        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                            android:orientation="horizontal" 
                            android:layout_width="fill_parent"
                            android:layout_height="fill_parent">
                            <ImageView 
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content" 
                                android:src="@drawable/ic_launcher"
                             />
                            <TextView
                                android:id="@+id/item_text" 
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content" 
                                android:text="Text not set" />
                        </LinearLayout>
                    */
                    view = View.inflate(getApplicationContext(), R.layout.row, null);
                }
                return view;
            }
        });        

        mainListView.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView< ? > arg0, View arg1, int arg2, long arg3) {
                Log.d("ListView", "Pos: " + arg2 + ", long : "+arg3);
                Toast.makeText(getApplicationContext(), "Test " + arg2, Toast.LENGTH_SHORT).show();
                /* Alternative way; opens a new Activity
                Intent intent = new Intent(this, SecondListViewActivity.class);
                intent.putExtra("position", pos);
                startActivity(intent);
                */
            }

            @Override
            public void onNothingSelected(AdapterView< ? > arg0) {
            }
        });

        /**
         * Implement an action for each item click.
         */
        mainListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView< ? > arg0, View arg1, int arg2, long arg3) {
                Log.d("ListView", "OnClickPos: " + arg2 + ", long : "+arg3);
                Toast.makeText(getApplicationContext(), "Test " + arg2, Toast.LENGTH_SHORT).show();
            }
        });
    }
}
于 2012-09-23T11:12:35.877 に答える