RecyclerView基本使用

RecyclerView基本使用

控件初始化


    protected BleListAdapter mAdapter;
    protected RecyclerView.LayoutManager mLayoutManager;

    @ViewById
    RecyclerView mRecyclerView;

    @AfterViews
    void initView() {
        L.d("[BleListFragment] initView");
        initRecyclerView();
        BleManagerService.setOnScanResultListener(new BleManagerService.OnScanResultListener() {
            @Override
            public void onScanResultListener(String name, String addr, int rssi) {
                L.d("onScanResultListener");
                addDeviceToList(name, addr, rssi);
            }
        });
    }

    @Override
    public void showSearch() {
        pro_search.setVisibility(View.VISIBLE);
        mAdapter.clear();
    }

 /**
     * 配置RecyclerView
     */
    private void initRecyclerView() {
        mLayoutManager = new LinearLayoutManager(getActivity());
        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
        mAdapter = new BleListAdapter();
        mAdapter.setOnItemClickListener(new BleListAdapter.OnItemClickListener() {
            @Override
            public void onClick(View v, int position, BleItem bleItem) {
                String bleName = bleItem.getBleName();
                String bleAddr = bleItem.getBleAddr();
                L.d("bleName: " + bleName + ",bleAddr: " + bleAddr);
                mPresenter.connectBle(bleName, bleAddr);
            }
        });
        mRecyclerView.setAdapter(mAdapter);
    }

    /**
     * 将设备添加到显示列表
     *
     * @param name
     * @param addr
     */
    @UiThread
    void addDeviceToList(String name, String addr, int rssi) {
        BleItem bleItem = new BleItem(name, addr, rssi);
        mAdapter.add(bleItem);
    }

此例中,列表的数据是通过扫描周围的设备动态添加进来的,RecyclerView的初始化在initRecyclerView中。

Adapter

public class BleListAdapter extends RecyclerView.Adapter<BleListAdapter.ViewHolder> {

    private List<BleItem> mDatas;
    private LayoutInflater inflater;

    private OnItemClickListener listener;

    public interface OnItemClickListener {
        void onClick(View v, int position, BleItem bleItem);
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        this.listener = listener;
    }

    public BleListAdapter() {
        mDatas = new ArrayList<>();
    }

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

    public void add(BleItem bleItem){
        mDatas.add(bleItem);
        notifyDataSetChanged();
    }

    public void clear(){
        if (mDatas != null)
        {
            mDatas.clear();
            notifyDataSetChanged();
        }
    }

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

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        holder.tv_name.setText(mDatas.get(position).getBleName());
        holder.tv_addr.setText(mDatas.get(position).getBleAddr());
        holder.tv_rssi.setText(mDatas.get(position).getRssi() + " dBm");
    }

    class ViewHolder extends RecyclerView.ViewHolder {
        private TextView tv_name;
        private TextView tv_addr;
        private TextView tv_rssi;

        public ViewHolder(View itemView) {
            super(itemView);

            tv_name = (TextView) itemView.findViewById(R.id.tv_name);
            tv_addr = (TextView) itemView.findViewById(R.id.tv_addr);
            tv_rssi = (TextView) itemView.findViewById(R.id.tv_rssi);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = getPosition();
                    if (listener != null) {
                        listener.onClick(v, position, mDatas.get(position));
                    }
                }
            });
        }
    }
}

adapter的数据主要是通过add方法添加进来,简单修改下可直接通过构造方法将数据传递进来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值