【发布时间】:2014-08-25 02:40:02
【问题描述】:
我和RecyclerView 玩了一会儿。有没有什么简单的方法可以将OnClickListener 用于RecyclerView 中的项目?我已经尝试在ViewHolder 中实现它。 onClick 事件从未被触发。
我使用notifyItemInserted(position) 为RecyclerView 添加新值。 UI 不会自动刷新。需要上下拉动才能刷新。但是当我调用notifyDatasetChanged(..)时,就可以了。
我已将DefaultItemAnimator 申请到RecyclerView。 但是,添加新项目时看不到任何动画。
感谢您的任何想法。
这是我测试过的第一个 Android L 组件,我一直卡在那里。
这是我的适配器类:
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();
}
}
【问题讨论】:
-
这正是我上面所说的。那家伙正在从 ViewHolder 实现 OnClickListener。我尝试过这个。但是,onClick 事件从未被触发。
-
他的代码调用
setOnClickListener()。上面显示的不是。 -
你是如何在 RecyclerView 中管理拉刷新的?
标签: android android-5.0-lollipop android-recyclerview