Android - ListView Aufblasen
Ich versuche zum füllen eines listview wo jede Zeile besteht aus 2 textviews und eine Schaltfläche. Ich denke, dass ich fast haben es richtig funktioniert aber jetzt das ListView zeigt nur 1 item in der ListView an und ignoriert die anderen Daten. Ich habe auch 2 xml-Dateien (shelfrow.xml (2 Textfelder, 1 button) und shelflist.xml(enthält das listview -)).
Hier ist der core-code von meinem Shelf.java Klasse. (MyListItemModel ist eine Klasse für die Speicherung jedes Buch)
List<MyItemModel> myListModel = new ArrayList<MyItemModel>();
try{
JSONArray entries = json.getJSONArray("entries");
for(int i=0;i<entries.length();i++){
MyItemModel item = new MyItemModel();
JSONObject e = entries.getJSONObject(i);
alKey.add(e.getInt("key"));
item.id = i;
item.title = e.getString("title");
item.description = e.getString("description");
myListModel.add(item);
}
}catch(JSONException e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
//THIS IS THE PROBLEM I THINK - ERROR: The method inflate(int, ViewGroup) in the type LayoutInflater is not applicable for the arguments (int,Shelf)
MyListAdapter adapter = new MyListAdapter(getLayoutInflater().inflate(R.layout.shelfrow,this));
adapter.setModel(myListModel);
setListAdapter(adapter);
lv = getListView();
lv.setTextFilterEnabled(true);
und einige der code in meiner Klasse MyListAdapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
convertView = renderer;
}
MyListItemModel item = items.get(position);
//replace those R.ids by the ones inside your custom list_item layout.
TextView label = (TextView)convertView.findViewById(R.id.item_title);
label.setText(item.getTitle());
TextView label2 = (TextView)convertView.findViewById(R.id.item_subtitle);
label2.setText(item.getDescription());
Button button = (Button)convertView.findViewById(R.id.btn_download);
button.setOnClickListener(item.listener);
//}
return convertView;
}
InformationsquelleAutor Plokoon | 2011-05-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es, weil Sie blähen die
View
beim erstellen derAdapter
. Da Sie nur dieAdapter
sobald Sie nur aufblasen einesView
. EinView
muss aufgeblasen werden für jede sichtbare Zeile in IhremListView
.Statt der übergabe der aufgeblasen
View
an den Konstruktor vonMyListAdapter
:Deine:
ich bin ganz neu bei android und ein bisschen Kampf mit diesem. Weiß auch nicht, wie meine Brücke-adapter mit den Daten richtig.. das ist nicht ganz richtig -- //MyListAdapter adapter = new MyListAdapter(getLayoutInflater().inflate(R. layout.Regal, this)); //adapter.setModel(myListModel); //setListAdapter(adapter);
Sie müssen spezifischer sein als es funktioniert nicht ganz. Wenn Sie Probleme haben, andere als die bereits ausführlich in deiner Frage könnte man noch die Frage offen, neue Fragen? Danke.
mein Erster post zeigt den code für meine Klasse. Es funktioniert ok, bis ich versuche, erstellen Sie eine Instanz der MyListAdapter - ich weiß nicht wie ich es code richtig, um an meinem arraylist<ListItemModel> in MyListAdapter. Ich weiß auch nicht, wie der code aufblasen Ansicht Zeug..
//Das ist falsch..FEHLER: Die Methode inflate(int, ViewGroup) in der Art LayoutInflater ist nicht anwendbar für die Argumente (int,Regal) MyListAdapter adapter = new MyListAdapter(getLayoutInflater().inflate(R. layout.shelfrow,this));
InformationsquelleAutor Gary Buyn