android.widget.ArrayAdapter只接受行模板
我正在开发一个android应用程序,其中包含一个Listivity类,并获得如下数据:android.widget.ArrayAdapter只接受行模板,android,Android,我正在开发一个android应用程序,其中包含一个Listivity类,并获得如下数据: ArrayAdapter<Item> ara=new MyArrayAdapter(this,_items); setListAdapter(ara); 我定义了MyArrayAdapter: .... public MyArrayAdapter(Activity context, List<BirthdayContact> list) { super(conte
ArrayAdapter<Item> ara=new MyArrayAdapter(this,_items);
setListAdapter(ara);
我定义了MyArrayAdapter:
....
public MyArrayAdapter(Activity context, List<BirthdayContact> list) {
super(context,R.layout.list_row,0,list);
//super(context, R.layout.birthday_list, list);
this.context = context;
this.list = list;
}
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.birthday_list_row, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder._cName= (TextView) view.findViewById(R.id.contact_name);
viewHolder._cImage = (ImageView) view.findViewById(R.id.contact_image);
viewHolder._cbirthDay=(TextView)view.findViewById(R.id.contact_birthday_remained);
view.setTag(viewHolder);
}
但这种方法的问题是,您不能只分配每一行的模板,并且不能在列表视图中有其他不属于数据列表的小部件。我的意思是我想有一个可以向用户显示消息的文本视图,下面是行列表
<>你能帮助我吗? < P>你应该考虑使用LeSead:LV.AddieHead VIEWVIEWVIEW BIDIDR.ID.Head;
这必须在活动中的onCreate方法中完成,您必须提供ID标头的窗口小部件。 < P>如果您希望其他组件处于活动状态,那么最好考虑正常活动而不是ListActudio。< /P> < P>如果您想要与简单ListVIEW不同的布局,您可以将内容视图设置为这样的布局文件:
setContentView(R.layout.layout_with_diferrent_views); // call this on the onCreate() method
<?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="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
其中,具有不同视图的R.layout.layout可以是如下所示的xml布局:
setContentView(R.layout.layout_with_diferrent_views); // call this on the onCreate() method
<?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="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
因为您扩展了ListActivity,所以布局中必须有一个id为@android:id/list的ListView元素。当然,只要您有一个id为@android:id/list的ListView元素,您就可以拥有比上面更复杂的布局。如果我想放置按钮或其他文本视图,该怎么办。如果我想使用addHeaderView…,我应该把小部件放在哪里?在原始模板中?是否可以在正常活动中使用“MyArrayAdapte”填充listview?