Wie füge ich mit addHeaderView () mehrere Header in einer einzelnen ListView hinzu?
Kann mit addHeaderView () von Android mehrere Header in einer einzelnen ListView hinzugefügt werden? Kann jemand ein Beispiel dafür geben, wie das geht?
Ich konnte das erreichen, was ich wollte, indem ich die IconicAdapter-Klasse manipulierte ... gibt es einen Grund, warum ich es nicht so machen sollte? Ich bin der Meinung, dass dies für fortgeschrittenere Implementierungen geändert werden könnte. In meinem Fall weiß ich, dass ich zwei Abschnitte mit einer Überschrift + 2 Zeilen in jedem Abschnitt haben werde.
class IconicAdapter extends ArrayAdapter<String> {
IconicAdapter() {
super(ContactTabProfileResource.this, R.layout.row_iconic, mArrayList);
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row = null;
if(position == 1 || position == 5) { // phone
row = inflater.inflate(R.layout.row_iconic, parent, false);
TextView label =(TextView)row.findViewById(R.id.label);
label.setText(mArrayList.get(position));
ImageView icon = (ImageView)row.findViewById(R.id.rowicon);
icon.setImageResource(R.drawable.icon_phone);
} else if (position == 2 || position == 6) { // email
row = inflater.inflate(R.layout.row_iconic, parent, false);
TextView label =(TextView)row.findViewById(R.id.label);
label.setText(mArrayList.get(position));
ImageView icon = (ImageView)row.findViewById(R.id.rowicon);
icon.setImageResource(R.drawable.icon_email);
} else if (position == 0 || position == 4) { // section header
row = inflater.inflate(R.layout.row_header, parent, false);
TextView label =(TextView)row.findViewById(R.id.label);
label.setText(mArrayList.get(position));
label.setBackgroundColor(Color.GRAY);
} else if (position == 3) { // section divider
row = inflater.inflate(R.layout.row_header, parent, false);
TextView label =(TextView)row.findViewById(R.id.label);
label.setText(" ");
}
return(row);
}
}
Dann habe ich zwei verschiedene XML-Layouts erstellt. row_header.xml steht für die Kopfzeilen und row_iconic.xml steht für die Nicht-Kopfzeilen, die ein Symbol enthalten.
row_header.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="wrap_content"
android:orientation="horizontal"
android:gravity="right"
>
<TextView
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:paddingLeft="10px"
android:gravity="left"
android:textStyle="bold"
/>
</LinearLayout>
row_iconic.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="wrap_content"
android:orientation="horizontal"
android:gravity="right"
>
<TextView
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:paddingLeft="44px"
/>
<ImageView
android:id="@+id/rowicon"
android:layout_width="40dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:layout_height="30dp"
android:src="@drawable/icon"
/>
</LinearLayout>