RecyclerView使用步骤

该文章介绍了如何在Android中使用RecyclerView,包括设置LayoutManager、创建Adapter和ViewHolder,以及实现点击事件。示例展示了Crime模型类的使用,并通过CrimeLab单例管理数据。
摘要由CSDN通过智能技术生成
RecyclerView使用步骤:

//1.设置LayoutManager
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
//2.设置Adapter
List<Crime> crimes = CrimeLab.getInstance().getCrimes();
recyclerView.setAdapter(new CrimeAdapter(getActivity(),crimes));
//3.在ViewHolder中设置点击事件

Adapter代码
public class CrimeAdapter extends RecyclerView.Adapter<CrimeViewHolder> {
    private Context mContext;
    private List<Crime> mCrimes;
    public CrimeAdapter(Context context, List<Crime> crimes) {
        mContext = context;
        mCrimes = crimes;
    }
    @NonNull
    @Override
    public CrimeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(mContext).inflate(R.layout.crime_item,parent,false);
        return new CrimeViewHolder(mContext,view);
    }

    @Override
    public void onBindViewHolder(@NonNull CrimeViewHolder holder, int position) {
        Crime crime = mCrimes.get(position);
        holder.title.setText(crime.getTitle());
        holder.resolved.setChecked(crime.isSolved());
    }

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

ViewHolder代码
public class CrimeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    public TextView title;
    public CheckBox resolved;
    private Context mContext;
    public CrimeViewHolder(Context context,@NonNull View view) {
        super(view);
        mContext = context;
        title = view.findViewById(R.id.title_textview);
        resolved = view.findViewById(R.id.resolved_checkbox);
        view.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Toast.makeText(mContext,title.getText(),Toast.LENGTH_SHORT).show();
        System.out.println(title.getText());
    }
}

Model类
public class Crime {
    private String title;
    private boolean solved;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public boolean isSolved() {
        return solved;
    }

    public void setSolved(boolean solved) {
        this.solved = solved;
    }
}
public class CrimeLab {
    //单例的作用:
    // 1.生命周期长,只有应用被移除,单例对象才会被回收,所以可以用来保存数据
    // 2.可以保证数据的唯一性
    private static CrimeLab sInstance;
    private List<Crime> mCrimes = new ArrayList<>();

    public static CrimeLab getInstance(){
        if(sInstance == null) {
            sInstance = new CrimeLab();
        }
        return sInstance;
    }

    private CrimeLab(){
        mCrimes.clear();
        for(int i = 0;i < 10;i++) {
            Crime crime = new Crime();
            crime.setTitle("Crime #" + (i+1));
            crime.setSolved(i % 2 == 0);
            mCrimes.add(crime);
        }
    }

    public List<Crime> getCrimes() {
        return mCrimes;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值