android.widget.ArrayAdapter只接受行模板

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

我正在开发一个android应用程序,其中包含一个Listivity类,并获得如下数据:

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?