zoukankan      html  css  js  c++  java
  • RecyclerView的应用及RecyclerView的点击事件

    第一步:导入依赖包   implementation 'com.android.support:recyclerview-v7:25.3.1'

    第二步:用 JSONArray 解析后台数据并setadapter  

    JSONArray jsonArray = jsonObject.getJSONArray("obj");

    if (jsonArray.size() > 0) {

    for (int i = 0; i < jsonArray.size(); i++) {

    JSONObject jb = jsonArray.getJSONObject(i); 

    patientID = jb.getInteger("id");

    patientName = jb.getString("name"); 

    patientPhone = jb.getString("phone");

    patientSFZNum = jb.getString("identityno");

    PatientPhoneBean patientPhoneBean = new PatientPhoneBean();

    patientPhoneBean.setPatientID(patientID);

    patientPhoneBean.setPatientName(patientName);

    patientPhoneBean.setPatientPhone(patientPhone);

    patientPhoneBean.setPatientSFZNum(patientSFZNum);

    patientPhoneList.add(patientPhoneBean);

    }

    phoneBean.setPhoneobj(patientPhoneList);

    Message message = Message.obtain();

    message.what = GETPATIENTPHONE_FLAG;

    message.obj = phoneBean.getPhoneobj();

    handler.sendMessage(message);

    然后在 handleMessage处理收到的消息:

    case GETPATIENTPHONE_FLAG:

    getPatientPhoneAdapter.addData((List<PatientPhoneBean>) msg.obj);

    getPatientPhoneRV.setAdapter(getPatientPhoneAdapter);

    getPatientPhoneSwipeRL.setRefreshing(false);

    break;

    第三步:在Adapter里面的操作:

    @Override

    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {

    if (holder instanceof GetPatientPhoneAdapter.MyHolder) {

    final PatientPhoneBean data = ppData.get(position);

    ((GetPatientPhoneAdapter.MyHolder) holder).tv_num.setText(data.getPatientID() + "");

    ((GetPatientPhoneAdapter.MyHolder) holder).tv_name.setText(data.getPatientName() + "");

    ((GetPatientPhoneAdapter.MyHolder) holder).tv_phone.setText(data.getPatientPhone() + "");

    ((GetPatientPhoneAdapter.MyHolder) holder).tv_sfznum.setText(data.getPatientSFZNum() + "");

    //点击事件

    ((GetPatientPhoneAdapter.MyHolder) holder).ll_commitphone.setOnClickListener(new View.OnClickListener(){

    @Override

    public void onClick(View v) {

    if (listener != null) {

    listener.onClick(position,data.getPatientPhone() + "");

    }}});

    }}

    //RecyclerView的点击事件

    //一、在recycler的适配器中定义接口

    public interface OnItemClickListener {

    void onClick(int position, String phone);

    }

    private OnItemClickListener listener;

    //第二步, 写一个公共的方法

    public void setOnItemClickListener(OnItemClickListener listener) {

    this.listener = listener;

    }

    步:点击事件的使用

    getPatientPhoneAdapter.setOnItemClickListener(new GetPatientPhoneAdapter.OnItemClickListener(){

    @SuppressLint("LongLogTag")

    @Override

    public void onClick(int position, final String phone) {

    //处理点击事件

    Log.d(TAG,"recycleview的点击事件:" + position + ",phone:" + phone);

    }});

    添加删除数据功能:

    //  删除数据
    public void removeData(int position) {
    peData.remove(position);
    //删除动画
    notifyItemRemoved(position);
    notifyDataSetChanged();
    }

     有什么疑问,欢迎评论!

  • 相关阅读:
    二项队列
    左式堆
    优先级队列
    web.xml配置文件中<async-supported>true</async-supported>报错的解决方案
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
    spring四种依赖注入方式
    Spring @Resource、@Autowired、@Qualifier的注解注入及区别
    CXF自动生成客户端
    maven update 以后报错。
    Mavne + Spring整合CXF
  • 原文地址:https://www.cnblogs.com/dmrbell/p/11763213.html
Copyright © 2011-2022 走看看