下面是我的自定义列表代码。
package com.demo.list;
import java.util.ArrayList;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MyCustomListView extends ListActivity {
private ArrayList<String> m_orders=null;
private OrderAdapter m_adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
m_orders = new ArrayList<String>();
for(int i=0;i<10;i++)
{
m_orders.add("Android List");
}
this.m_adapter = new OrderAdapter(this, R.layout.row, m_orders);
setListAdapter(this.m_adapter);
}
private class OrderAdapter extends BaseAdapter
{
private ArrayList<String> items;
public OrderAdapter(Context context,int id,ArrayList<String> items)
{
super();
this.items=items;
}
public View getView(int position,View convertView,ViewGroup parent)
{
View view=convertView;
if(view==null)
{
LayoutInflater inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view=inflater.inflate(R.layout.row,null);
}
String string=items.get(position);
if(string!=null)
{
TextView t1=(TextView)findViewById(R.id.toptext);
TextView t2=(TextView)findViewById(R.id.bottomtext);
ImageView imageview=(ImageView)findViewById(R.id.image);
if(t1!=null)
{
t1.setText("Name:-"+string.toString());
}
if(t2!=null)
{
t2.setText("Status:-"+string.toString());
}
if(imageview!=null)
{
imageview.setImageResource(R.drawable.icon);
}
}
return view;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return 10;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
}
}
这是我的row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight">
<ImageView android:id="@+id/image" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_marginRight="6dip">
</ImageView>
<LinearLayout android:orientation="vertical"
android:layout_width="0dip" android:layout_height="fill_parent"
android:layout_weight="1">
<TextView android:id="@+id/toptext"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center_vertical"/>
<TextView android:id="@+id/bottomtext"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="marquee"/>
</LinearLayout>
</LinearLayout
我的问题是我只获得了列表的第一个元素,尽管我已经为arraylist添加了10个元素。 任何人都可以告诉我这段代码有什么问题。
答案 0 :(得分:2)
你应该替换:
view=inflater.inflate(R.layout.row,null);
使用:
view=inflater.inflate(R.layout.row, parent, false);
编辑:
另外,替换:
TextView t1=(TextView)findViewById(R.id.toptext);
TextView t2=(TextView)findViewById(R.id.bottomtext);
ImageView imageview=(ImageView)findViewById(R.id.image);
使用:
TextView t1=(TextView)view.findViewById(R.id.toptext);
TextView t2=(TextView)view.findViewById(R.id.bottomtext);
ImageView imageview=(ImageView)view.findViewById(R.id.image);
顺便说一下:您的大多数适配器编码错误。我假设这是因为你只是想快速看到这个工作。