美文网首页
Android RecyclerView不完全笔记

Android RecyclerView不完全笔记

作者: 白云无尽_ | 来源:发表于2019-03-21 23:26 被阅读0次

引入

implementation 'com.android.support:recyclerview-v7:27.1.1'

布局

<android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>

Adapter

拓展Adapter类

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

构造函数

public SomeAdapter(Context context, List data){
        this.context = context;
        this.data = data;

        if(this.data == null){
            this.data = new ArrayList<>();
            this.data.add("");
            Toast.makeText(context, context.getString(R.string.load_error), Toast.LENGTH_SHORT).show();
        }
    }

写静态ViewHolder内部类

public static class ViewHolder extends RecyclerView.ViewHolder{
        TextView title;
        public ViewHolder(View itemView){
            super(itemView);
            title = itemView.findViewById(R.id.textView_title);
        }
    }

重写onCreateViewHolder(), onCreateViewHolder(), getItemCount()

@Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
        View view = LayoutInflater.from(context).inflate(R.layout.item_some, parent,false);
        return new ViewHolder(view);
    }

    @Override
    public void onCreateViewHolder(final ViewHolder holder, final int pos){
        holder.itemView.setOnClickListener( view -> {
            if (onItemClickListener != null){
                onItemClickListener.OnItemClick(holder.itemView, pos, "wocao");
            }
        });

        holder.title.setText(R.string.test);
       
    }
//  控制item显示数量
    @Override
    public int getItemCount(){
        return data.size();
    }

完整版

public class SomeAdapter extends RecyclerView.Adapter<SomeAdapter.ViewHolder>{
    private Context context;
    private OnItemClickListener onItemClickListener;
    private List data;

    public SomeAdapter(Context context, List data){
        this.context = context;
        this.data = data;

        if(this.data == null){
            this.data = new ArrayList<>();
            this.data.add("");
            Toast.makeText(context, context.getString(R.string.load_error), Toast.LENGTH_SHORT).show();
        }
    }
    //click事件接口
    public interface OnItemClickListener{
        void OnItemClick(View view, int pos, String url);
    }
    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        this.onItemClickListener = onItemClickListener;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder{
        TextView title;
        public ViewHolder(View itemView){
            super(itemView);
            title = itemView.findViewById(R.id.textView_title);
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
        View view = LayoutInflater.from(context).inflate(R.layout.item_some, parent,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int pos){
        holder.itemView.setOnClickListener( view -> {
            if (onItemClickListener != null){
                onItemClickListener.OnItemClick(holder.itemView, pos, "wocao");
            }
        });

        holder.title.setText(R.string.test);
       
    }
    @Override
    public int getItemCount(){
        return data.size();
    }
}

UI中实例化并调用(Kotlin)

val mLayoutManager: RecyclerView.LayoutManager

mLayoutManager = GridLayoutManager(applicationContext, 1, LinearLayoutManager.VERTICAL, false)
val mAdapter = SomeAdapter(applicationContext, null)
mAdapter.setOnItemClickListener{ view, pos, url ->
  Toast.makeText(this, url + pos, Toast.LENGTH_SHORT).show()
}
// 设置布局管理器
recyclerView.layoutManager = mLayoutManager
// 设置Item添加和移除的动画
recyclerView.itemAnimator = DefaultItemAnimator()
// 设置adapter
recyclerView.adapter = mAdapter

相关文章

网友评论

      本文标题:Android RecyclerView不完全笔记

      本文链接:https://www.haomeiwen.com/subject/zzafvqtx.html