android.widget.ArrayAdapter <T>просто принять шаблон строки - PullRequest
0 голосов
/ 25 февраля 2012

Я занимаюсь разработкой приложения для Android, которое содержит класс ListAtivity и получает данные в следующем виде:

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);
              }

......

Но проблема с этим способом в том, что вы не можете назначить только шаблон каждой строки, и у вас не может быть другого виджета в виде списка, который не является частью списка данных.Я имею в виду, что я хочу сказать, что TextView показывает сообщения пользователю, а ниже я показываю список строк.

Можете ли вы помочь мне, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 25 февраля 2012

Если вы хотите, чтобы в активности были другие компоненты. Тогда лучше рассмотреть Нормальную активность вместо ListActivity.

0 голосов
/ 25 февраля 2012

Если вы хотите использовать макет, отличный от простого ListView, у вас есть возможность установить представление содержимого для файла макета, например, так:

setContentView(R.layout.layout_with_diferrent_views); // call this on the onCreate() method

, где R.layout.layout_with_different_views может быть XML-макетом, напримерthis:

<?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, вы должны иметь в макете элемент ListView с идентификатором @android:id/list.Конечно, вы можете иметь более сложный макет, чем приведенный выше, если у вас есть элемент ListView с идентификатором @android:id/list

0 голосов
/ 25 февраля 2012

Вы должны рассмотреть использование listHeader: lv.addHeaderView (findViewById (R.id.header)); Это должно быть сделано в вашем методе onCreate в вашей деятельности, и вы должны предоставить виджет с заголовком id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...