Android - Gonflant ListView
Je suis en train de remplir une listview où chaque ligne dispose de 2 textviews et un bouton. Je pense que j'ai failli avoir de travail correctement mais pour l'instant, la liste ne montre que 1 élément dans la liste et ignore les autres données. J'ai aussi 2 fichiers xml (shelfrow.xml (2 textfields, 1 bouton) et shelflist.xml(contient la liste)).
Voici le code de base de mon Shelf.java classe. (MyListItemModel est une classe pour le stockage de chaque livre)
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);
et une partie du code dans ma classe 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;
}
OriginalL'auteur Plokoon | 2011-05-21
Vous devez vous connecter pour publier un commentaire.
C'est parce que vous gonflez le
View
lorsque vous créez leAdapter
. Puisque vous n'créer leAdapter
une fois, vous ne gonflent unView
. UnView
besoin d'être gonflé pour chaque ligne visible dans votreListView
.Au lieu de passer le gonflés
View
le constructeur deMyListAdapter
:Ton ce:
je suis assez nouveau pour android et un peu lutter avec ça. Aussi ne sais pas comment combler ma carte avec les données correctement.. ce n'est pas tout à fait à droite -- //MyListAdapter carte = new MyListAdapter(getLayoutInflater().inflate(R. layout.plateau, this)); //de l'adaptateur.setModel(myListModel); //setListAdapter(carte);
Vous aurez besoin d'être plus précis que il ne fonctionne pas. Si vous rencontrez des problèmes autres que celui qui a déjà été détaillé dans votre question, pourriez-vous ajouter à la question ou d'ouvrir de nouvelles questions? Merci.
mon premier post montre le code de ma classe. Il fonctionne ok jusqu'à ce que j'essaie de créer une instance de MyListAdapter - je ne sais pas comment le coder correctement pour passer mon arraylist<ListItemModel> dans MyListAdapter. Aussi, je ne sais pas comment le code de la gonfler à vue d'autres choses..
//C'est mal..ERREUR: La méthode gonfler(int, ViewGroup) dans le type LayoutInflater n'est pas applicable pour les arguments (int,Étagère) MyListAdapter carte = new MyListAdapter(getLayoutInflater().inflate(R. layout.shelfrow,this));
OriginalL'auteur Gary Buyn