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();
}

 有什么疑问,欢迎评论!

posted @ 2019-10-30 10:11  仙人湖中的鱼  阅读(393)  评论(0)    收藏  举报