2011-12-09 78 views
1

我有一個用一些按鈕和一個ListView小部件定義的佈局。我也有一個爲ListView中的每一行定義的佈局xml,帶有2個TextViews。我還有格式爲List<String[]>的數據,其中String[]填充了3個項目。我想要在ListView中顯示數據,其中來自String數組的3個項目中的2個(包含在列表的每個元素中)分配給ListView佈局中的一個TextView行。如何使用數組列表中的數據填充自定義佈局ListView

我可以得到一個ListView,使用其中一個默認視圖,通過將其分解爲單個值的數組,並使用ArrayAdapter<String>來顯示數組中單個項目的完整列表,但我不知道如何爲ListView佈局中的多行執行此操作。

非常感謝任何幫助。

此外,如果原始List<String[]>列表中的數據應該更改,那麼如何刷新ListView小部件?

感謝您的任何建議。

回答

1

您應該創建自己的一個ArrayAdapter的延伸:

class MyAdapter extends ArrayAdapter<String[]>{ 
     public MyAdapter(Context context, int textViewResourceId, ArrayList<String[]> objects) { 
      super(context, textViewResourceId, objects); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      if(convertView== null) convertView = getLayoutInflater().inflate(R.layout.your_layout, null); 

      String[] strings = getItem(position); 
      TextView line1 = (TextView)convertView.findViewById(R.id.line1); 
      line1.setText(strings[0]) 
      TextView line2 = (TextView)convertView.findViewById(R.id.line2); 
      line2.setText(strings[0]) 
      //... 

      return convertView; 
     } 
    } 

要刷新列表,請撥打適配器notifyDataSetChanged()方法。

+0

僅供參考:這是短短几天內第三次我回答了「創建自己的適配器」的問題:p – Jave

+0

非常棒,謝謝。我想我應該提到,我完全陌生於android編碼(實際上是java),所以雖然我搜索了,也許我正在尋找錯誤的東西。無論如何,感謝您花時間回覆。快速點,你有'返回佈局'在這裏,我不得不改變它'返回convertView',這似乎工作。當底層數據發生變化時,如何從活動中的另一個按鈕更新此視圖的任何提示? –

+0

編輯我的答案,包括(並解決小布局問題(我傾向於在適配器中創建一個名爲佈局的新視圖,如果它是佈局而不是視圖...))編程的好運氣: ) – Jave

相關問題