Кнопки RelativeLayout сверху и пользовательский вид списка под кнопками - PullRequest
0 голосов
/ 05 января 2012

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

Вот как это выглядит сейчас:

http://img440.imageshack.us/img440/2803/device20120104173817.png

Вот как я хочу, чтобы он выглядел:

http://img215.imageshack.us/img215/805/devicewant.png

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

<RelativeLayout 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:id="@+id/relativeLayout2">

    <TextView
        android:id="@+id/postinfo"
        android:layout_below="@+id/FirstPage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false" />

    <TextView
        android:id="@+id/dateinfo"
        android:layout_alignRight="@+id/postinfo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false" />

        <TextView
        android:id="@+id/post"
        android:layout_below="@+id/postinfo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false" />

            <ImageView
        android:id="@+id/icon2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/post"
        android:contentDescription="OCForums thread icon"
        android:focusable="false"
         />

            <RelativeLayout
                android:id="@+id/relativeLayout3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="top" >

                <Button
                    android:id="@+id/LastPage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentTop="true"
                    android:text="@string/last" />

                <Button
                    android:id="@+id/NextPage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_toLeftOf="@+id/LastPage"
                    android:text="@string/next" />

                <Button
                    android:id="@+id/FirstPage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:text="@string/first" />

                <Button
                    android:id="@+id/PreviousPage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_toRightOf="@+id/FirstPage"
                    android:text="@string/previous" />

            </RelativeLayout>

        </RelativeLayout>

</RelativeLayout>

статический класс MyCustomAdapter2 extends BaseAdapter {private LayoutInflater mInflater;

public MyCustomAdapter2(Context context, int textViewResourceId,List<List<String>> objects) {
    super();
    mInflater = LayoutInflater.from(context);
    rid = textViewResourceId;
    fcontext = context;
    usernames = objects.get(0);
    usernamecolors = objects.get(1); 
    dates = objects.get(2);
    messages = objects.get(3);
    Log.i("is it empy?(messages)",Integer.toString(messages.size()));
    Log.i("is it empy?(dates)",Integer.toString(dates.size()));
    Log.i("is it empy?(usernamecolors)",Integer.toString(usernamecolors.size()));
    Log.i("is it empy?(usernames)",Integer.toString(usernames.size()));
    }

public int getCount() {
return lists.size();
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(rid, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.postinfo);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(usernames.get(position));
holder.text.setTextColor(Color.parseColor(usernamecolors.get(position)));

ViewHolder holderd;
if (convertView == null) {
convertView = mInflater.inflate(rid, null);
holderd = new ViewHolder();
holderd.text = (TextView) convertView.findViewById(R.id.dateinfo);
convertView.setTag(holderd);
} else {
holderd = (ViewHolder) convertView.getTag();
}
holderd.text.setText(dates.get(position));


ViewHolder holderm;
if (convertView == null) {
convertView = mInflater.inflate(rid, null);
holderm = new ViewHolder();
holderm.text = (TextView) convertView.findViewById(R.id.post);
convertView.setTag(holderm);
} else {
holderm = (ViewHolder) convertView.getTag();
}
holderm.text.setText(messages.get(position));


    ImageView icon=(ImageView)convertView.findViewById(R.id.icon2);

    if (newlist.size() > 0 && lists.get(position).matches(newlist.get(position))){
    icon.setImageResource(R.drawable.forum_new);
    }
    else{
    icon.setImageResource(R.drawable.forum_old);
    }

return convertView;
}

static class ViewHolder {
TextView text;
}
}

Это то место, где я все это называю.

ListView listview = (ListView) findViewById(R.id.listView3);
            listview.setAdapter(new CustomListView.MyCustomAdapter2(ThreadActivity.this, R.layout.row2, output));

1 Ответ

1 голос
/ 05 января 2012

Необходимо определить заголовок как отдельный макет (отдельный файл xml), затем создать его экземпляр и добавить его в просмотр списка в качестве заголовка - тогда этот макет будет отображаться как первый элемент в списке.

См. Этот вопрос: Android ListView со сложным заголовком

...