0

車のブランドリストからBMWを選択した場合のように、あるリスビューから別のリストビューにデータを渡すことができるコードを書く方法リストビューで特定の車のシリーズを選択できるようになります

メイン.XML

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="20sp" >
</TextView>

カーアクティビティ.JAVA

package car.brand.test;

package car.brand.test;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class CarActivity extends ListActivity {
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        String[] values = new String[] { "BMW", "Mercedes","Nissan"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);
    }

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    String item = (String) getListAdapter().getItem(position);
    Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
}

}

4

1 に答える 1

0

別の ListView にデータを渡す必要はありません。目的を達成するために必要な ListView は 1 つだけです。自分でマッピングを行う必要があります。つまり、BMW はすべての BMW 車シリーズ モデルを含むリスト (java.util.ArrayList) にマップし、Mercedes はすべてのメルセデス車シリーズ モデルを含むリストにマップします。

車のブランドを選択するときは、基になるデータセットを ListView に交換して を呼び出しますnotifyDataSetChanged()

スニペット:

MyAdapter myAdapter = ...;
Map<String, List<String>> carSeriesMap = ...;
protected void onListItemClick(ListView l, View v, int position, long id) {
    String brand = (String) getListAdapter().getItem(position);
    List<String> carSeriesList = carSeriesMap.get(brand);
    // set carSeriesList as the underlying dataset for the adapter
    myAdapter.setDataset(carSeriesList);
}

class MyAdapter extends BaseAdapter {
    List<String> dataset;
    public void setDataset (List<String> newDataset) {
        dataset = newDataset;
        notifyDataSetChanged();
    }
    public View getView(int position, ......) {
        // get data from dataset
        String text = dataset.get(position);
        // other code here...
    }
}
于 2012-04-06T01:14:10.847 に答える