2012-04-05 28 views
0

怎麼寫,可以從一個lisview數據傳遞到另一個列表視圖代碼一樣,如果我從汽車品牌列表中選擇寶馬,我將能夠選擇一個特定的車系,在列表視圖Android的ListView控件將數據傳遞到另一個列表視圖

main.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(); 
} 

}

回答

0

你不需要將數據傳遞到另一個ListView中,只需要一個ListView控件來實現你的願望。你將不得不自己做的映射,即寶馬映射到一個列表(的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... 
    } 
} 
+0

我一般不會推薦這樣做。您不僅可以更換數據,而且當您點擊某個項目時可能還需要不同的行爲。另外,如果你想使用一些佈局,而不是僅僅一行?這是本質上不同的數據,它通常最好還是使用新的ListView,甚至常常一個新的活動。 – kabuko 2012-04-06 01:41:06

+0

使用一個新的ListView或一個新的活動是矯枉過正了OP的問題。然而,如果問題更復雜,我同意你的看法。我只是提供了一個選項,並試圖簡單的事情。 – neevek 2012-04-06 03:04:32

+0

那麼,如果用戶選擇了寶馬,你清除數據並加載所有的寶馬車,你想要的,但隨後的用戶意識到了他們想要奔馳呢?如果您有一項活動,那麼當用戶點擊後退按鈕時,除非您手動處理後退按鈕並管理自己的導航堆棧,否則他們將退出整個活動。使用新的活動並不過分。這是標準的。 – kabuko 2012-04-06 18:27:29

相關問題