我有需要在Android ListView上顯示的WS數據。 數據可以是不同的類型,所以我需要動態創建一個ListView項目的佈局,我該怎麼做?我認爲我必須使用LayoutInflater,但一直使用它與現有的佈局,從未從頭開始創建佈局。我該怎麼做?以編程方式在Android中創建列表視圖項目
2
A
回答
2
您需要創建爲
適配器只是檢查這個環節就闡述所有關於使用適配器。在給定的URL
http://www.vogella.de/articles/AndroidListView/article.html
//編輯
只是檢查這個代碼
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
public MySimpleArrayAdapter(Context context, String[] values) {
super(context, R.layout.rowlayout, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
textView.setText(values[position]);
// Change the icon for Windows and iPhone
String s = values[position];
if (s.startsWith("iPhone")) {
imageView.setImageResource(R.drawable.no);
} else {
imageView.setImageResource(R.drawable.ok);
}
return rowView;
}
}
其中R.layout.rowlayout是你的每一行 的佈局中,你可以定義你的圖像瀏覽,文字瀏覽
1
正如你所說的你使用不同的數據類型,我假設你想顯示differen每個數據類型的佈局。沒有必要動態創建你的listview-items;如果你願意,你可以從XML中膨脹它們。
創建自定義列表適配器(請參閱vipin提供的vogella鏈接)並覆蓋getView()
,getItemViewType()
和getViewTypeCount()
方法。
在getView()
中,您可以通過編程方式構建您的視圖,也可以通過XML將它們膨脹。要確定要膨脹(或構建)哪個佈局,請致電getItemViewType(position)
,檢查它返回的值,然後選擇要爲該值膨脹的佈局。有關如何構建XML佈局的更多信息,請參見this page in the dev guide on XML layouts。
接下來,看看this answer並將其實現到您的適配器中。一定要閱讀評論。例如,覆蓋getItemViewType()
的東西,如:
public int getItemViewType(int position) {
if(getItem(position) instanceOf ItemA) {
return 0;
} else {
return 1;
}
}
這種方法允許你的ListView回收視圖,並使用ViewHolder模式(有關詳細信息,再次看到提供的鏈接VIPIN)。
相關問題
- 1. Android - 以編程方式將項目添加到列表視圖
- 2. Android創建列表以編程方式
- 3. 如何以編程方式在JQM中創建列表視圖
- 4. 以編程方式在asp.net中創建列表視圖
- 5. 在Android上以編程方式創建的樣式視圖
- 6. 以編程方式更改列表視圖項目背景
- 7. 以編程方式更改自定義列表視圖項目
- 8. 基於列以編程方式在Sharepoint中創建樹視圖
- 9. 以編程方式在視圖中創建列
- 10. 以編程方式創建視圖
- 11. 以編程方式創建視圖
- 12. 以編程方式創建視圖
- 13. ios以編程方式創建視圖
- 14. iOS以編程方式創建視圖
- 15. 如何以編程方式創建列表視圖到網格
- 16. 以編程方式創建列表視圖iOs
- 17. Android:以編程方式在表格中創建兩列
- 18. 在Android中以編程方式創建父視圖中的子視圖
- 19. 在android中以編程方式滾動列表視圖
- 20. 在Android上使用XML以編程方式創建視圖
- 21. Visual Studio:以編程方式在項目目錄中創建項目項目
- 22. 如何以編程方式在列表視圖中選擇項目
- 23. 以編程方式在列表視圖中選擇一個項目
- 24. 以編程方式編譯Android項目
- 25. 如何以編程方式在Android項目結構中創建目錄?
- 26. 如何在android中以編程方式創建方形圖形?
- 27. 以編程方式在Eclipse中創建插件項目
- 28. C#在asp.net項目中以編程方式創建網站
- 29. 以編程方式創建持久性android視圖
- 30. Android如何以編程方式創建視圖
vogella網站有很棒的教程,但無法找到一個從頭開始創建佈局的示例,其中添加了視圖。我看到的所有例子都使用了預先存在的xml佈局。我想避免這種情況。 – Cris 2012-04-02 12:53:15
好吧,那你爲什麼不嘗試通過新對象創建它們作爲ListView list = new ListView(context)); – vipin 2012-04-02 12:54:53
克里斯解決方案爲你工作嗎? – vipin 2012-04-02 13:21:23