Ho giocato un po 'con RecyclerView
. C'è un modo semplice per inserire OnClickListener
per gli articoli in RecyclerView
? Ho provato a implementarlo in ViewHolder
. L'evento onClick non è mai stato attivato.Sfide in RecyclerView di Android L
E ho utilizzato notifyItemInserted(position)
per aggiungere nuovo valore a RecyclerView
. L'interfaccia utente non viene aggiornata automaticamente. Necessario tirare su e giù per aggiornare. Ma quando invoco lo notifyDatasetChanged(..)
, è ok.
Ho applicato DefaultItemAnimator
a RecyclerView
. Ma, non vedendo alcuna animazione quando è stato aggiunto un nuovo elemento.
Grazie anticipo per qualsiasi idea.
Questo è il primo componente di Android L che ho provato e che sto stucchiando lì.
Qui è la mia classe di adattatori:
public class AdapterRecyclerView extends RecyclerView.Adapter<AdapterRecyclerView.MyViewHolder> {
private List<String> arrExperiences;
//Provide a reference to the type of views that you are using - Custom ViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView tvExperienceTitle;
public TextView tvExperienceDesc;
public MyViewHolder(RelativeLayout itemView) {
super(itemView);
tvExperienceTitle = (TextView) itemView.findViewById(R.id.tv_experience_title);
tvExperienceDesc = (TextView) itemView.findViewById(R.id.tv_experience_desc);
}
}
//Provide a suitable constructor : depending on the kind of dataset.
public AdapterRecyclerView(List<String> arrExperiences){
this.arrExperiences = arrExperiences;
}
//Create new view : invoke by a Layout Manager
@Override
public AdapterRecyclerView.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RelativeLayout view = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.view_item_recycler, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(AdapterRecyclerView.MyViewHolder viewHolder, int position) {
//get element from your dataset at this position.
//replace the content of the view with this element.
viewHolder.tvExperienceTitle.setText(arrExperiences.get(position));
}
@Override
public int getItemCount() {
return arrExperiences.size();
}
public void addExperience(String experience, int position){
arrExperiences.add(position, experience);
notifyItemInserted(position);
//notifyDataSetChanged();
}
public void removeExperience(){
int index = (int) (Math.random() * arrExperiences.size());
arrExperiences.remove(index);
notifyItemRemoved(index);
//notifyDataSetChanged();
}
}
Si potrebbe provare https://gist.github.com/grantland/cd70814fe4ac369e3e92 – CommonsWare
Questo è esattamente ho detto sopra. Quel ragazzo sta implementando OnClickListener da ViewHolder. L'ho provato. Ma l'evento onClick non è mai stato attivato. –
Il suo codice chiama 'setOnClickListener()'. I tuoi dati sopra non lo fanno. – CommonsWare