2013-11-01 6 views
7

Ich möchte eine Listenansicht erstellen, in der ich ein anderes Layout für alle Zeilen haben möchte. Dann, wie kann ich benutzerdefinierte Adapter für verschiedene Layout für verschiedene Zeile erstellen.Android Listview mit unterschiedlichen Layouts für jede Zeile?

Jede Hilfe würde sehr geschätzt werden.

Vielen Dank im Voraus.

+0

Kontrolle dieses http://stackoverflow.com/questions/4777272/android-listview-with-different-layout-for-each-row –

+0

Verwenden Sie eine benutzerdefinierte Listenansicht mit einem benutzerdefinierten Adapter – Raghunandan

+0

können Sie für diese –

Antwort

6

Regelmäßige Adapter erstellen, in der create_view-Funktion das Zeilen-XML-Layout entsprechend dem Zeilentyp aufblasen.

zum Beispiel

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if (position % 2 == 0) 
     xml_type = R.layout.row_one 
    else 
     xml_type = R.layout.row_two 

    View rowView = inflater.inflate(xml_type, parent, false); 
} 
+0

danke für Ihre Hilfe ... –

8

Sie benötigen Adapter, zu erweitern und außer Kraft setzen ihre getView Methode.

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    int resource; 

    // Here you set ‘resource’ with the correct layout, for the row 
    // given by the parameter ‘position.’ 
    // 
    // E.g.: 
    // 
    // switch (someArray[position].type) { 
    // case SOME_TYPE_A: resource = R.layout.a; break; 
    // case SOME_TYPE_B: resource = R.layout.b; break; 
    // ... 
    // } 

    View rowView = inflater.inflate(resource, parent, false); 

    // Here you initialize the contents of the newly created view. 
    // 
    // E.g.: 
    // switch (resource) { 
    // case R.layout.a: 
    //  TextView aA = (TextView) rowView.findViewById(R.id.aa); 
    //  aA.setText("View 1"); 
    //  ... 
    //  break; 
    // case R.layout.b: 
    //  TextView bB = (TextView) rowView.findViewById(R.id.bb); 
    //  bB.setText("View 2"); 
    //  ... 
    //  break; 
    // ... 
    // } 

    return rowView; 
} 

Weitere Beispiele zu Adaptern und deren Erweiterung finden Sie unter den folgenden Links.

+1

+1 für die Einfachheit – A23149577

Verwandte Themen