2012-04-14 9 views
0

Ich bin neu in Android und habe eine einfache Frage. Derzeit arbeite ich an einer Produktanwendung, die es Benutzern ermöglicht, eine Vielzahl von Produkten hinzuzufügen, zu entfernen und zu durchsuchen. Die Anwendung verwendet eine vordefinierte XML-basierte Layoutdatei als Vorlage, die den gesamten Bildschirm ausfüllt, um die aktuellen Produktdetails anzuzeigen. Wenn der Benutzer ein neues Produkt hinzufügt, möchte ich die gleiche Layoutdatei erneut verwenden, sie aber mit den Informationen des neuen Produkts füllen. Außerdem möchte ich die zuvor hinzugefügten Produkte (z. B. eine ArrayList) behalten, und der Benutzer kann diese Liste durchsuchen, indem er horizontal gleitet (von links nach rechts oder von rechts nach links). Nun, was ist das Beste, was man verwenden kann, um jedes Produkt darzustellen (Ansicht, Unteransicht, ... usw.), und wie man dieselbe XML-basierte Layoutdatei wiederverwenden kann, um die Details der verschiedenen Produkte anzuzeigen. Bitte entschuldigen Sie mein Englisch und bedanken Sie sich im Voraus für die HilfeWiederverwendung einer XML-Layout-Datei, um andere Informationen anzuzeigen (Android-Anwendung)

+0

Wenn Sie ein gemeinsames Layout haben, dann welches Problem haben Sie mit , um ein gemeinsames Layout in allen anderen Layout einfügen –

Antwort

1

Sie können eine neue Klasse erstellen, die den ArrayAdapter erweitert und dann die getView() - Methode überschreiben, um Ihr benutzerdefiniertes Layout aufzublasen. getView() gibt die Ansicht für eine einzelne Zeile zurück. Auf diese Weise können Sie Ihr Layout wiederverwenden. So wird es in etwa so aussehen:

public class ProductAdapter extends ArrayAdapter<Product> { 

    private LayoutInflater li; 

    public ProductAdapter(Context context, List<Product> products) { 
     super(context, 0, products); 
     li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     // Get the product of the position 
     Product product = getItem(position); 

     View v = convertView; 
     if (v == null) { 
      // Your custom layout file for a single row in the list. 
      v = li.inflate(R.layout.product_row, null); 
     } 

     // Populate your view here. Use v.findViewById(). 

     return v; 
    } 

} 

Um die Liste in einer ListActivity Verwendung zu zeigen:

// The variable products is your initial list of products. 
ProductAdapter adapter = new ProductAdapter(this, products); 
setListAdapter(adapter); 

Wenn Sie ein Produkt hinzufügen Sie diese zu Ihrem ArrayAdapter durch den Aufruf entweder die adapter.add hinzufügen () (wenn Sie Ihr Produkt am Ende der Liste hinzufügen möchten) oder einfügen() (um anzugeben, wo in der Liste der Produkte, die Sie das neue Produkt einfügen möchten) Methode auf dem ProductAdapter. Anschließend können Sie adapter.notifyDataSetChanged() aufrufen, um Ihren Adapter zu benachrichtigen, dass sich die Daten geändert haben und die Liste aktualisiert werden muss.

1

Was Sie beschreiben, wird von der ViewPager implementiert. Auf der Entwicklerseite gibt es zusätzlich zur API-Referenz eine blog post.

Um es zu implementieren, müssen Sie eine PagerAdapter Unterklasse erstellen, um die Details jeder Ansicht für die ViewPager ausfüllen.