Android L的RecyclerView面临的挑战

Aun*_*yae 11 android android-5.0-lollipop android-recyclerview

我一直在玩RecyclerView一会儿.是否有任何简单的方法来放入OnClickListener物品RecyclerView?我试过实现它ViewHolder.onClick事件从未被触发.

而且我用它notifyItemInserted(position)来增加新的价值RecyclerView.用户界面没有自动刷新.需要上下拉动才能刷新.但是当我调用时notifyDatasetChanged(..),它没问题.

我申请DefaultItemAnimatorRecyclerView.但是,添加新项目时看不到任何动画.

感谢提前任何想法.

这是我测试过的第一个Android L组件,我一直在那里.

这是我的Adapter类:

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();
}
}
Run Code Online (Sandbox Code Playgroud)

Jac*_*bak 0

在这里查看我的回答。您确实需要一个额外的类(可能作为完整版本的一部分包含在内),但它将允许您按照用于 ListView 的方式创建 OnItemClickListener。