0

如何编写可以将数据从一个 lisview 传递到另一个 listview 的代码,例如,如果我从汽车品牌列表中选择 BMW,我将能够在 listview 中选择特定的汽车系列

主要的.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>

CarActivity.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 即可实现您想要的。您必须自己进行映射,即 BMW 映射到包含所有 BMW 汽车系列车型的列表(java.util.ArrayList),而梅赛德斯映射到包含所有梅赛德斯汽车系列车型的列表等。

当您选择汽车品牌时,您将基础数据集交换为 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 回答