2016-03-28 14 views
-1

Derzeit habe ich eine Standard-Listview angezeigt Namen aus einem Arraylist JavaClassName. Ich wollte einen Imageview in die Listenansicht implementieren, damit ich und versuchte Methoden aus diesen 2 Links gelesen haben:
Android Custom Listview with Image and Text using ArrayAdapter
Android Custom ListView with Images and Text – ExampleAndroid Angepasste ListView und ArrayList

Ich habe Probleme aus ihrer String[] und Integer[] in ihren jeweiligen CustomList Klassen in meine eigene Umwandlung ArrayList als Das Bild und der Name werden in diesem Arraylist gespeichert. Meine ArrayList bestehen auch aus anderen Daten, aber ich brauche nur Daten zu erhalten, die in der angepassten ListView angezeigt werden.

Edits/Add on:

private final Activity context; 
private final String[] itemname; 
private final Integer[] imgid; 

public CustomListAdapter(Activity context, String[] itemname, Integer[] imgid) { 
    super(context, R.layout.mylist, itemname); 
    // TODO Auto-generated constructor stub 

    this.context=context; 
    this.itemname=itemname; 
    this.imgid=imgid; 
} 

public View getView(int position,View view,ViewGroup parent) { 
    LayoutInflater inflater=context.getLayoutInflater(); 
    View rowView=inflater.inflate(R.layout.mylist, null,true); 

    TextView txtTitle = (TextView) rowView.findViewById(R.id.item); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    TextView extratxt = (TextView) rowView.findViewById(R.id.textView1); 

    txtTitle.setText(itemname[position]); 
    imageView.setImageResource(imgid[position]); 
    extratxt.setText("Description "+itemname[position]); 
    return rowView; 

}; 

Ich habe eng mit einem der Links versehen folgte eine customAdapter zu erstellen. Und das ist es, was ich in den MainActivity

final ArrayList<JavaClassName> arrayListName = new ArrayList<JavaClassName>(); 
arrayListName.add(new JavaClassName(R.drawable.icon1, "name", "info", "info", "info")); 
arrayListName.add(new JavaClassName(R.drawable.icon2, "name", "info", "info", "info")); 

final ArrayList<String> itemName = new ArrayList<String>(); 
    for(int i=0; i<arrayListName.size(); i++){ 
     String name = arrayListName.get(i).getName().toString(); 
     itemName.add(name); 
    }; 

CustomAdapter adapter = new CustomAdapter>(this, android.R.layout.simple_list_item_1, itemName); 
    listView.setAdapter(adapter); 

Wie kann ich passe die String [] und Integer [] aus der CustomAdapter Klasse in die CustomAdapter adapter = new CustomAdapter> (dies, android.R.layout.simple_list_item_1 , Artikelname);?

+0

Möchten Sie Ihren Code teilen und erklären, was passiert? – aribeiro

+0

'adapter = neuer ArrayAdapter (das ist android.R.layout.simple_list_item_1, arrayListName);' das ist mein aktueller Adapter.Die angegebenen 2 Links verwenden diesen Adapter, der 2 Arrays übergibt: 'CustomListAdapter adapter = new CustomListAdapter (this, itemname, imgid);' Also wie kann ich Änderungen vornehmen, um das Bild und den Namen von meiner Arraylist in den customListAdapter zu bekommen, ohne weitere 2 zu erstellen Arrays? – Alvin

+0

Sie müssen einen benutzerdefinierten Adapter erstellen, der die Sammlungen akzeptiert, die Sie zum Füllen der Daten in der Liste erstellt haben, um eine benutzerdefinierte Listenansicht zu erstellen. Stellen Sie dazu den Code in der Frage zur Verfügung, damit Sie helfen können. –

Antwort

0

https://www.youtube.com/watch?v=cyk_ht8z6IA

Von dem, was ich sagen kann, ich schlage vor, Sie Ihren eigenen Adapter erstellen soll. Ich bin mir über Arraylist nicht sicher, da ich die meiste Zeit nur Arrays benutzt habe.

+0

Ja, ich habe meinen eigenen Adapter erstellt, aber ich bin mir nicht sicher, wie ich den Arraylist anpassen soll. Wenn ich Arrays verwenden würde, hätte ich noch 4-5 Daten, was bedeutet, dass ich mehrere Arrays erstellen muss. Der Zweck von mir, eine Arraylist zu machen, ist, weil mein ListView einmal geklickt hat, wird zu einer anderen Seite beabsichtigt, die mehrere Daten von der arrayList anzeigt – Alvin

0

Convert ArrayList to Array

List<String> names = new ArrayList<String>(); 
// add stuff here 
String[] namesArr = names.toArray(new String[names.size()]); 

hoffe, das hilft !!!

0

Ihre benutzerdefinierte Adapterklasse erbt von ArrayAdapter, nehme ich an. Nach der Dokumentation, die Ressource, die Sie an den Konstruktor (2. Argument, R.layout.simple_list_item_1 in Ihrem Fall) eine Layout sein sollte enthalten TextView -

enter image description here

Da Sie haben ein komplexeres Layout als nur ein TextView sollten Sie stattdessen die Klasse BaseAdapter erweitern. Dann

  1. Erstellen Sie Ihre eigene Arraylist (n) Ihre Daten zu verwalten (An ArrayList<String> und ArrayList<Integer> in Ihrem Fall).
  2. Stellen Sie hinzufügen, entfernen und andere ähnliche Methoden zur Verwaltung Ihrer Listen.
  3. Überschreiben Sie die getView Methode, um Ihr benutzerdefiniertes Layout aufzublasen, um die Texte und das Bild gemäß Ihren Anforderungen einzustellen.