2017-04-19 3 views
0

Je rencontre des difficultés pour remplir des valeurs dans une liste, qui n'affiche actuellement aucune ligne.Listview non rempli après onPostExecute

Premièrement, je récupère des valeurs de ma table de base de données et les stocke dans des tableaux dans onPostExecute.

  LikedListAdapter listAdapter = new LikedListAdapter(context, R.layout.liked_list_main, restID, restName, restAddr1, restAddr2, restImgPath); 
     lvPlaces.setAdapter(listAdapter); 

Ces valeurs sont ensuite passées avec succès dans mon ListAdapter.

public LikedListAdapter(Context context, int resource, String[] restID, String[] restName, String[] restAddr1, String[] restAddr2, String[] restImgPath) { 
    super(context, resource); 

    this.context = context; 
    this.resource = resource; 

    this.restID = restID; 
    this.restName = restName; 
    this.restAddr1 = restAddr1; 
    this.restAddr2 = restAddr2; 
    this.restImgPath = restImgPath; 
} 

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


    if(convertView==null) { 
     likedItemsView = new LinearLayout(getContext()); 
     String inflater = Context.LAYOUT_INFLATER_SERVICE; 
     LayoutInflater vi; 
     vi = (LayoutInflater)getContext().getSystemService(inflater); 
     vi.inflate(resource, likedItemsView, true); 
    } 
    else { 
     likedItemsView = (LinearLayout) convertView; 
    } 

    ImageView restaurantImg = (ImageView)likedItemsView.findViewById(R.id.listItemThumbImg); 
    TextView restaurantName =(TextView)likedItemsView.findViewById(R.id.listItemTitle); 
    TextView restaurantDesc = (TextView)likedItemsView.findViewById(R.id.listItemSubText); 

    restaurantName.setText(restName[position]); 
    restaurantDesc.setText(restAddr1[position] + ", " + restAddr2[position]); 

    Picasso 
      .with(getContext()) 
      .load(restImgPath[position]) 
      .into(restaurantImg); 

    return likedItemsView; 
} 

Cependant, lorsque je lance l'application, la liste est vide. Lors du débogage, je remarque que les valeurs sont passées avec succès à mon listAdapter (lors du débogage il affiche les valeurs récupérées affichées dans le constructeur) mais il ne frappe jamais la méthode getView, où les valeurs sont définies pour chaque widget listview.

Y a-t-il quelque chose que je ne comprends pas ou dois-je appeler la méthode getView à un moment donné? Merci d'avance.

+0

add listAdapter.notifyDataSetChanged(); après setAdapter – ZeroOne

+0

Avez-vous essayé avec 'listAdapter.notifyDataSetChanged()' sous votre 'setAdapter'? –

+0

@GustavoConde J'ai ajouté ceci, mais la liste n'est toujours pas remplie. Ran à travers le processus en utilisant le débogueur et un point d'arrêt dans la méthode getView mais il n'est jamais touché. –

Répondre

1

Est-ce que vous substituez

getCount()

méthode

? Si ce n'est pas le cas, retournez la taille de vos lignes. Ex-

@Override 
public int getCount() { 
    return restName.length; 
} 

Espérons que votre problème sera résolu. Si la liste déjà peuplée puis utilisez

adapter.notifyDataSetChanged()

méthode

.

+0

Je n'avais pas la méthode getCount() incluse. J'ai maintenant ajouté et cela fonctionne parfaitement. Merci beaucoup. –

0
LikedListAdapter listAdapter = new LikedListAdapter(context, R.layout.liked_list_main, restID, restName, restAddr1, restAddr2, restImgPath); 
lvPlaces.setAdapter(listAdapter); 
listAdapater.notifyDataSetChanged(); // <-- add this 
+0

J'ai ajouté ceci, mais la liste n'est toujours pas remplie. Ran à travers le processus en utilisant le débogueur et un point d'arrêt dans la méthode getView mais il n'est jamais touché. –