2017-03-05 20 views
0

我嘗試使用自定義單元格佈局和ArrayAdapter在listview中添加動態數量的單元格,並且它做得很好。但是當我希望每個單元格可能跟隨不同類型的數據時,我遇到了一個問題。如何使用條件單元格類型在ListView中動態添加項目?

例我有3個類別列表視圖內:

  1. 視頻(video_custom_cell.xml)
  2. 照片(photo_custom_cell.xml)
  3. 音頻(audio_custom_cell.xml)

如果數據是視頻然後我使用單元格編號1,否則如果數據是照片我使用photo_custom_cell,否則我使用audio_custom_cell。

我試過的只能重複使用自定義單元格作爲動態行數,但我仍然沒有找到如何使用自定義單元格跟隨單元格內數據的類型。

任何人都可以幫我解釋我的問題的一個例子嗎?

謝謝。

+0

嘗試使用替代的ListView RecyclerView,你就可以做這些類型的東西。 您可以在此鏈接學習如何使用RecyclerView: [link](https://developer.android.com/training/material/lists-cards.html) 要解決您的問題,使用recyclerview,您只需要請按照第一個答案: [鏈接](http://stackoverflow.com/questions/26245139/how-to-create-recyclerview-with-multiple-view-type) 它比listView更復雜,但它更強大。 [鏈接](http://stackoverflow.com/questions/26728651/recyclerview-vs-listview) –

回答

0

您可以使用自定義適配器,這和你內心例如做getView功能:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View rowView; 
    if (convertView == null) { 
     if(items.get(position).type.equals("video")) { 
      rowView = getActivity().getLayoutInflater().inflate(
        R.layout.video_custom_cell, null); 
     }else if(items.get(position).type.equals("photo")) { 
      rowView = getActivity().getLayoutInflater().inflate(
        R.layout.photo_custom_cell, null); 
     } 
    } else { 
     rowView = convertView; 
    } 
} 
相關問題