![](/img/trans.png)
[英]How do i display other textview etc in a layout created by an ArrayAdapter
[英]How do I use ArrayAdapter to display a list view?
我想在我的應用程序中顯示一個列表視圖。 每行應包含一個文本和一個圖像。 我已經使用ArrayAdapter來顯示它,但是如何在文本后插入圖像。 這是代碼:
String lvr[]={"Android","iPhone","BlackBerry","AndroidPeople"};
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list1 = (ListView) findViewById(R.id.cg_listview1);
list1.setAdapter(new ArrayAdapter<String>(this,R.layout.alerts , lvr));
這里的警報是我的布局,其中僅包含textView。
您將需要創建一個自定義適配器來實現此目的。
public class ResultAdapter extends BaseAdapter {
private final Context context;
private final List<Result> results;
public ResultAdapter(Context context, List<Result> results) {
this.context = context;
this.results = results;
}
@Override
public int getCount() {
return this.results.size();
}
@Override
public Object getItem(int position) {
return this.results.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
}
}
創建一個Result類,用於存儲文本和圖像。 在getView方法中,以編程方式或通過使用LayoutInflater從XML布局加載視圖來創建視圖。
如果要控制項目布局在列表視圖中的外觀,則應該對ArrayAdapter
進行自定義實現:
一個ListAdapter,用於管理由任意對象數組支持的ListView。 (...)要在數組顯示中使用TextViews以外的其他內容(例如ImageViews),或者要使toString()結果之外的一些數據填充視圖,請重寫getView(int,View,ViewGroup)以返回查看您想要的。
如果您只是谷歌搜索自定義arrayadapter示例 ,則應該找到足夠的示例來展示如何實現此方法。 兩個這樣的示例是:
祝好運 :)
代碼完成,並帶有文本視圖更改。 ArrayList是通用的,但是必須使用ArrayList構造函數才能進行添加,插入和刪除。
public class ListViewLearn extends Activity {
public Button btnAddData;
public ListView listShow;
public listRayAdapter adapter;
public ArrayList<Integer> tmpStrRay;
public Resources mainRes;
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.mainlistlayout);
tmpStrRay = new ArrayList<Integer>();
tmpStrRay.add(1);
tmpStrRay.add(2);
tmpStrRay.add(3);
mainRes= getApplicationContext().getResources();
adapter = new listRayAdapter(getApplicationContext(),R.layout.listitem, tmpStrRay);
btnAddData = (Button) findViewById(R.id.btnAddData);
btnAddData.setOnClickListener(clickit);
listShow= (ListView) findViewById(R.id.listShow);
listShow.setAdapter(adapter);
super.onCreate(savedInstanceState);
}
final OnClickListener clickit = new OnClickListener(){
@Override
public void onClick(View v) {
for (int xx=4; xx<=50; xx++){
adapter.add(new Integer(xx));
}
}};
class listRayAdapter extends ArrayAdapter<Integer>
{
private ArrayList<Integer> items;
Bitmap tmpImg;
public listRayAdapter(Context context, int textVwId, ArrayList<Integer> txtRay)
{
super(context,textVwId,txtRay);
this.items = txtRay;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View newv= convertView;
if (newv == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
newv = vi.inflate(R.layout.listitem, null);
}
if ((position%2)==0){
tmpImg = BitmapFactory.decodeResource(mainRes, R.drawable.even);
}else{
tmpImg = BitmapFactory.decodeResource(mainRes, R.drawable.odd);
}
ImageView img = (ImageView) newv.findViewById(R.id.img);
img.setImageBitmap(tmpImg);
TextView tt= (TextView) newv.findViewById(R.id.listedItem);
Integer tmpInt = new Integer(items.get(position));
tt.setText(tmpInt.toString());
return newv;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.