2017-10-13 4 views
0

Je suis en train de problème ici. Sur les données de liaison, les objets publics ne peuvent pas être utilisés. J'étais censé faire une classe qui obtient des données d'une autre classe et mettre du texte en XML.RecyclerView onBind, ne lie pas les données

public class EventsAdapter extends 
RecyclerView.Adapter<RecyclerView.ViewHolder>{ 
private List<LauncherActivity.ListItem> listItems; 
private Context context; 
public EventsAdapter(List<LauncherActivity.ListItem> listItems, Context context) { 
    this.listItems = listItems; 
    this.context = context; 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.event_list, parent, false); 
    return new ViewHolder(v); 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    LauncherActivity.ListItem listItem = listItems.get(position); 
    holder. 
} 

@Override 
public int getItemCount() { 
    return listItems.size(); 
} 

public class ViewHolder extends RecyclerView.ViewHolder { 
    public TextView textHeading = null; 
    public TextView textDescription = null; 
    public ViewHolder(View itemView) { 
     super(itemView); 
     textHeading = (TextView)itemView.findViewById(R.id.viewHead); 
     textDescription = (TextView)itemView.findViewById(R.id.viewDesc); 
    } 
} 

} 
+0

Veuillez ajouter le code comme texte. –

+0

Sûrement il est plus difficile de télécharger les captures d'écran que de copier coller le code dans une question. Avez-vous déjà pensé à des gens qui pourraient vouloir prendre votre code et l'éditer afin qu'ils puissent présenter une réponse? –

+0

Laissez-moi éditer la question s'il vous plaît :) – prazeev

Répondre

0

Vous n'utilisez pas votre ViewHolder qui est la raison pour laquelle les méthodes ne peuvent pas être utilisés

changer ceci:

public class EventsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> 

à ceci:

public class EventsAdapter extends RecyclerView.Adapter<ViewHolder> //your ViewHolder 

Votre onBindViewHolder ce sera comme ceci

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    LauncherActivity.ListItem listItem = listItems.get(position); 

} 
0

Son échec à résoudre parce que vous utilisez RecyclerView.ViewHolder dans la méthode onBind. Utilisez votre classe personnalisée EventsAdapter.ViewHolder pour résoudre vos variables. Pour exemple:

public void onBindViewHolder(EventsAdapter.ViewHolder holder, int position) { 

} 
+0

Non, cela n'a pas donné de solution. – prazeev

0

changement try étend cette .. RecyclerView.Adapter < "EventsAdapter.ViewHolder"> sans "" bien sûr

0

rendre votre EventsAdapter étendre RecyclerView.Adapter<EventsAdapter.MyViewholder> puis à nouveau mettre en œuvre des méthodes et constructeur , ainsi votre onBindViewHolder sera créé avec EventsAdapter.ViewHolder holder lui-même.

Hope this helps ..

0

Il y a deux façons de le faire:

Faites votre EventsAdapter étendre RecyclerView.Adapter

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 

    LauncherActivity.ListItem listItem = listItems.get(position); 
    holder.textHeading.setText(....) 
} 

ou

avec l'aide de transtypage

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

    LauncherActivity.ListItem listItem = listItems.get(position); 

    ((ViewHolder)holder).textHeading.setText(....) 
} 

Et tu es prêt. :) Codage heureux :)