Mehrere TextViews in ListView

  • 11 Antworten
  • Neuester Beitrag
Diskutiere Mehrere TextViews in ListView im Android App Entwicklung im Bereich Betriebssysteme & Apps.
G

Gingerbread

Fortgeschrittenes Mitglied
M

muck

Ambitioniertes Mitglied
Das fehlt wohl in der Beschreibung.

In der xml-Datei der Activity muß min.
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView
     android:id="@+id/android:list"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     />
</LinearLayout>
enthalten sein.

fahrzeuge.xml ist nicht die xml-Datei der Activity sprich die xml.Datei die in
onCreate setContentView(R.layout.xxx) übergeben wird.

Man kann das dann noch so gestallten dass für den Fall einer DB-Abfrage ohne Ergebnis keine leere Liste sondern ein alternatives Layout angezeigt wird.
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ListView
 android:id="@+id/android:list"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 />
 <LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]"
     android:id="@+id/noteEmptyProductList"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:visibility="gone"
     >
  <TextView
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:paddingTop="25px"
   android:paddingLeft="20px"
   android:text="Die Liste ist leer !!!"
   />
 </LinearLayout>
</LinearLayout>
Aufruf im Code:
Code:
ListView listView = (ListView) findViewById(android.R.id.list);
listView.setEmptyView(findViewById(R.id.noteEmptyProductList));
EDIT: Wenn ich mir das Beispiel nochmal anschaue würde ich sagen der hat sich was zusammengeschustert was zufällig funktioniert hat. Das ist sehr schlecht was da steht.
 
Zuletzt bearbeitet:
G

Gingerbread

Fortgeschrittenes Mitglied
Ok,
hat vll irgendwer eine annehmbare Anleitung zum erstellen einer ListView mit mehreren Elementen/Views?
 
garak

garak

Ehrenmitglied
Schau dir mal in den Api-Demos Liste 6 an, da wird mit Titeln gearbeitet ansonsten wäre eine expandierende Liste auch eine Möglichkeit, da wären die Titel dann die Gruppen die man auch auf- und zu-klappen könnte.
 
M

muck

Ambitioniertes Mitglied
Was hast Du denn vor, und wo kommen die Daten her?
 
G

Gingerbread

Fortgeschrittenes Mitglied
Die Daten werden aus einer Datenbank abgerufen und sollen formatiert dargestellt werden.
Außerdem soll noch eine Ceckbox in die ListView eingebaut werden.
 
M

muck

Ambitioniertes Mitglied
Damit wird CheckedTextView zu Deinem Zauberwort. (Android bringt da von Haus aus Layouts mit, da kann man gut abschauen. In Eclipse sind die nicht zu öffnen aber aus dem Dateisystem heraus kann man sich das anschauen.)

Ich versuch mal was auf die Schnelle (ohne Textformatierung und einzeilig)
checked_text_view.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]"
    android:id="@+id/txtZeile1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/textCheckMark"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"
/>
LayoutfileDerActivity.xml (android:choiceMode="multipleChoice" erlaubt mehrere angehakte Items)
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="[URL]http://schemas.android.com/apk/res/android[/URL]"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ListView
     android:id="@+id/android:list"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:choiceMode="multipleChoice"
     />
</LinearLayout>
Activity.java muss von ListActivity erben!!!
Code:
Cursor list = dbConn.rawQuery("SELECT _id, name FROM tablexy WHERE _id = 5", null);
SimpleCursorAdapter listAdapter; = new SimpleCursorAdapter (this, R.layout.checked_text_view.xml, list, new String[] {"name"}, new int[] {R.id.txtZeile1});
setListAdapter(listAdapter);
startManagingCursor(list);
Das müsste Dir eine Liste erstellen. Du müsstest das um eine zweite Textzeile und die Formatierung erweitern. Des weiteren würde ich Dir dann empfehlen einen performanteren Adapter zu schreiben. (Schlagwort: ViewHolderPattern)
Mal als Anhaltspunkt:
Code:
public class ProductListAdapter extends SimpleCursorAdapter {
 private int sumIndex = -1;
 
 class ViewHolder {
  private TextView tvSum;
 }
 
 public ProductListAdapter(Context context, int layout, Cursor list, String[] sum, int[] productIds) {
  super(context, layout, productList, sum, productIds);
 
  sumIndex = list.getColumnIndex("name");
 }
 
 @Override
 public View newView(Context context, Cursor cursor, ViewGroup parent) {
  final View view = super.newView(context, cursor, parent);
  final ViewHolder viewHolder = new ViewHolder();
 
  viewHolder.tvSum = (TextView) view.findViewById(R.id.txtZeile1);
 
  view.setTag(viewHolder);
  return view;
 }
 
 @Override
 public void bindView(View view, Context context, Cursor cursor) {
  final ViewHolder viewHolder = (ViewHolder) view.getTag();
 
  viewHolder.tvSum.setText(cursor.getString(sumIndex));
 }
}
 
G

Gingerbread

Fortgeschrittenes Mitglied
Habe es jetzt nicht mittels CheckedTextView gelöst, sondern mit einer einfachen Checkbox rechts neben dem Text.
Jedoch zeigt die onListItemClick() Methode dann keine Auswirkungen mehr. Das heißt, wenn ich ein Item der ListView anklicke, passiert nichts.

Edit: Habe es jetzt doch mittels CheckedTextView gemacht, jedoch passiert nichts wenn ich auf einen Button klicke. Hab also das gleiche Problem wie hier: https://www.android-hilfe.de/forum/android-app-entwicklung.9/multiple-choice-list.64.html#post-92509
Aber ich habe ja schon android:choiceMode="multipleChoice" deklariert
 
Zuletzt bearbeitet:
M

muck

Ambitioniertes Mitglied
Welcher Button? Poste mal den Code.

Gesendet von meinem HTC Desire mit der Android-Hilfe.de-App
 
G

Gingerbread

Fortgeschrittenes Mitglied
Also meine ListView sieht so ähnlich aus wie dir hier:


Nur das ich halt mehrere TextViews mit Inhalt fülle. Wenn ich jetzt auf die CheckedTextBox klicke passiert nichts. Es taucht kein grüner Pfeil drin auf.
 
G

Gingerbread

Fortgeschrittenes Mitglied
Weiß keiner woran es liegt, dass es funktioniert wenn meine ListView nur eine TextView pro row enthält?
Wenn ich dann mehrere formatierte TextViews einfüge, dann hat das klicken einfach keine Auswirkung.
 
Ähnliche Themen - Mehrere TextViews in ListView Antworten Datum
9
0