2011-10-19 49 views
1

對於我的列表視圖,我希望能夠在其中顯示多個文本視圖,每個文本視圖顯示與其關聯的特定數組的項目。現在的問題是我有:列表視圖中的多個數組

public class GreatestHits extends ListActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, Array1)); 

    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 

    lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
      String text = (String) ((TextView)view).getText(); 
} 

    }); 

} 
static final String[] Array1 = new String[] {"Item1", "Item2"}; 
static final String[] Array2 = new String[] {"Item1", "Item2"}; 
static final String[] Array3 = new String[] {"Item1", "Item2"}; 

和R.layout.list_item的XML:我將如何把數組2和數組三成代碼,以便它可以顯示在

<?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="16sp" 
android:id= "@+id/textView1" 
> 

</TextView> 

<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="16sp" 
android:id= "@+id/textView2" 
> 
</TextView> 
<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="16sp" 
android:id= "@+id/textView3" 
> 
</TextView> 

listview lv的textviews?

+0

讓我看看,如果我理解正確此。你希望listview中的每個單元格在每個數組中有三個textview ...是否正確? –

+0

是的,正好:) – user974047

+0

擴展arrayadapter並實現函數getView如你所願 –

回答

3

ArrayAdapter只能在一個文本視圖中顯示一個數組中的數據。你將不得不通過自己擴展BaseAdapter來自己提供這個功能。我目前無法編譯android代碼,所以下面的代碼沒有經過測試......但它至少應該能夠告訴你可以做什麼。

public class TripleArrayAdapter extends BaseAdapter { 
    private String[] array1, array2, array3; 
    private LayoutInflater inflater; 

    public TripleArrayAdapter(Context context, String[] a1, String[] a2, String[]a3) { 
    array1 = a1; 
    array2 = a2; 
    array3 = a3; 
    inflater = 
     (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

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

    @Override 
    public Object getItem(int position) { 
    return null; 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    View currentView = convertView; 

    if(currentView==null) { 
     currentView = inflater.inflate(R.layout.list_item, parent, false); 
    } 

    TextView tView = (TextView)currentView.findViewById(R.id.textView1); 
    tView.setText(array1[position]); 

    tView = (TextView)currentView.findViewById(R.id.textView2); 
    tView.setText(array2[position]); 

    tView = (TextView)currentView.findViewById(R.id.textView3); 
    tView.setText(array3[position]); 

    return currentView; 
    } 
} 

然後,使用該適配器爲您的ListActivity的適配器,你剛纔說

setListAdapter(new TripleArrayAdapter(this, Array1, Array2, Array3));