xrecleview 上拉下拉加载 失效 解决

本文介绍了一种在Android应用中使用自定义PopupWindow显示司机选择界面的方法。通过继承PopupWindow并实现View.OnClickListener接口,文章详细展示了如何在不同活动(Activity)中初始化和使用PopupWindow,包括设置布局、监听事件、适配器配置及数据更新策略。同时,文中还涉及了RecyclerView的优化技巧,如上拉加载和下拉刷新功能的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.driverdispatch.www.customerview;

import android.app.Activity;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.PopupWindow;

import com.driverdispatch.www.R;
import com.driverdispatch.www.ViewStytle.RecycleViewDivider;
import com.driverdispatch.www.activity.CustomerShiporderDoneActivity;
import com.driverdispatch.www.activity.CustomerShiporderReachActivity;
import com.driverdispatch.www.activity.CustomerShiporderRoutingActivity;
import com.driverdispatch.www.activity.CustomerShiporderWaitLoadingActivity;
import com.driverdispatch.www.adapter.CustomerShiporderWaitLoadingListAdapter;
import com.driverdispatch.www.adapter.SelDriverListAdapter;
import com.driverdispatch.www.entity.CarLengthBean;
import com.driverdispatch.www.entity.CarTypeBean;
import com.driverdispatch.www.entity.SelectDriverBean;
import com.driverdispatch.www.entity.Status;
import com.driverdispatch.www.model.SelDriverListModel;
import com.driverdispatch.www.pojo.ShipOrderAndUnusual;
import com.driverdispatch.www.util.AndroidTool;
import com.driverdispatch.www.util.ToastUtil;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**

  • @date
    **/
    public class SelDriverPopWindow extends PopupWindow implements View.OnClickListener {
    private CustomerShiporderWaitLoadingActivity wlactivity;
    private CustomerShiporderRoutingActivity roactivity;
    private CustomerShiporderReachActivity retivity;
    private CustomerShiporderDoneActivity dtivity;
    private Activity activity;
    // private List selectDriverBean;
    private SelDriverListModel model;
    private SelDriver selDriver;
    private boolean flag=true;
    private Integer holderfresh=0;
    private static EditText tvnameseldriver;
    private static EditText tvnoseldriver;
    private String name;
    private String number;
    private SelDriverListAdapter selDriverListAdapter = null;
    public static Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
    super.handleMessage(msg);
    Bundle data = msg.getData();
    String name = data.getString(“name”);
    String number = data.getString(“number”);
    tvnameseldriver.setText(name);
    tvnoseldriver.setText(number);

     }
    

    };
    public interface SelDriver {
    void onSelDriver(String name, String number);
    }

    public SelDriverPopWindow(CustomerShiporderWaitLoadingActivity activity, SelDriver selDriver) {
    super(activity);
    this.selDriver=selDriver;
    this.wlactivity=activity;
    initView();
    }
    public SelDriverPopWindow(CustomerShiporderRoutingActivity activity, SelDriver selDriver) {
    super(activity);
    this.selDriver=selDriver;
    this.roactivity=activity;
    initView();
    }
    public SelDriverPopWindow(CustomerShiporderReachActivity activity, SelDriver selDriver) {
    super(activity);
    this.selDriver=selDriver;
    this.retivity=activity;
    initView();
    }
    public SelDriverPopWindow(CustomerShiporderDoneActivity activity, SelDriver selDriver) {
    super(activity);
    this.selDriver=selDriver;
    this.dtivity=activity;
    initView();
    }

    private void initView() {
    View view=null;
    if (wlactivity != null){
    activity = wlactivity;
    view = LayoutInflater.from(wlactivity).inflate(R.layout.pop_driver_sel, null);
    selDriverListAdapter = new SelDriverListAdapter(wlactivity,new ArrayList<>());
    model = ViewModelProviders.of(wlactivity).get(SelDriverListModel.class);
    model.mLiveDriverData.observe(wlactivity, listResource -> {
    if (listResource == null) return;
    if (listResource.status == Status.SUCCESS) {
    if (listResource.data != null) {
    holderfresh++;
    if (listResource.retry) {
    if (flag){
    selDriverListAdapter.setData(listResource.data);
    }else{
    selDriverListAdapter.addData(listResource.data);
    }
    if (holderfresh == 1){
    model.getSelDriverData(AndroidTool.getIMEI(activity),“1”);
    }
    } else {
    if (flag){
    selDriverListAdapter.setData(listResource.data);
    }else{
    selDriverListAdapter.addData(listResource.data);
    }
    if (holderfresh == 1){
    model.getSelDriverData(AndroidTool.getIMEI(activity),“1”);
    }
    }
    } else {
    ToastUtil.showToast(activity, “没有数据了!”);
    }
    } else {
    ToastUtil.showToast(activity, listResource.msg);
    }

         });
     }
     if (roactivity != null){
         activity = roactivity;
         view = LayoutInflater.from(roactivity).inflate(R.layout.pop_driver_sel, null);
         selDriverListAdapter = new SelDriverListAdapter(roactivity,new ArrayList<>());
         model = ViewModelProviders.of(roactivity).get(SelDriverListModel.class);
         model.mLiveDriverData.observe(roactivity, listResource -> {
             if (listResource == null) return;
             if (listResource.status == Status.SUCCESS) {
                 if (listResource.data != null) {
                     holderfresh++;
                     if (listResource.retry) {
                         if (flag){
                             selDriverListAdapter.setData(listResource.data);
                         }else{
                             selDriverListAdapter.addData(listResource.data);
                         }
                         if (holderfresh == 1){
                             model.getSelDriverData(AndroidTool.getIMEI(activity),"1");
                         }
                     } else {
                         if (flag){
                             selDriverListAdapter.setData(listResource.data);
                         }else{
                             selDriverListAdapter.addData(listResource.data);
                         }
                         if (holderfresh == 1){
                             model.getSelDriverData(AndroidTool.getIMEI(activity),"1");
                         }
                     }
                 } else {
                     ToastUtil.showToast(activity, "没有数据了!");
                 }
             } else {
                 ToastUtil.showToast(activity, listResource.msg);
             }
    
         });
     }
     if (retivity != null){
         activity = retivity;
         view = LayoutInflater.from(retivity).inflate(R.layout.pop_driver_sel, null);
         selDriverListAdapter = new SelDriverListAdapter(retivity,new ArrayList<>());
         model = ViewModelProviders.of(retivity).get(SelDriverListModel.class);
         model.mLiveDriverData.observe(retivity, listResource -> {
             if (listResource == null) return;
             if (listResource.status == Status.SUCCESS) {
                 if (listResource.data != null) {
                     holderfresh++;
                     if (listResource.retry) {
                         if (flag){
                             selDriverListAdapter.setData(listResource.data);
                         }else{
                             selDriverListAdapter.addData(listResource.data);
                         }
                         if (holderfresh == 1){
                             model.getSelDriverData(AndroidTool.getIMEI(activity),"1");
                         }
                     } else {
                         if (flag){
                             selDriverListAdapter.setData(listResource.data);
                         }else{
                             selDriverListAdapter.addData(listResource.data);
                         }
                         if (holderfresh == 1){
                             model.getSelDriverData(AndroidTool.getIMEI(activity),"1");
                         }
                     }
                 } else {
                     ToastUtil.showToast(activity, "没有数据了!");
                 }
             } else {
                 ToastUtil.showToast(activity, listResource.msg);
             }
    
         });
     }
     if (dtivity != null){
         activity = dtivity;
         view = LayoutInflater.from(dtivity).inflate(R.layout.pop_driver_sel, null);
         selDriverListAdapter = new SelDriverListAdapter(dtivity,new ArrayList<>());
         model = ViewModelProviders.of(dtivity).get(SelDriverListModel.class);
         model.mLiveDriverData.observe(dtivity, listResource -> {
             if (listResource == null) return;
             if (listResource.status == Status.SUCCESS) {
                 if (listResource.data != null) {
                     holderfresh++;
                     if (listResource.retry) {
                         if (flag){
                             selDriverListAdapter.setData(listResource.data);
                         }else{
                             selDriverListAdapter.addData(listResource.data);
                         }
                         if (holderfresh == 1){
                             model.getSelDriverData(AndroidTool.getIMEI(activity),"1");
                         }
                     } else {
                         if (flag){
                             selDriverListAdapter.setData(listResource.data);
                         }else{
                             selDriverListAdapter.addData(listResource.data);
                         }
                         if (holderfresh == 1){
                             model.getSelDriverData(AndroidTool.getIMEI(activity),"1");
                         }
                     }
                 } else {
                     ToastUtil.showToast(activity, "没有数据了!");
                 }
             } else {
                 ToastUtil.showToast(activity, listResource.msg);
             }
    
         });
    
     }
     Button btncancelseldriver = view.findViewById(R.id.btncancelseldriver);
     tvnameseldriver = view.findViewById(R.id.tvnameseldriver);
     tvnoseldriver = view.findViewById(R.id.tvnoseldriver);
     XRecyclerView xrseldriver = view.findViewById(R.id.xrseldriver);
     Button btnsubmitseldriver = view.findViewById(R.id.btnsubmitseldriver);
     btncancelseldriver.setOnClickListener(this);
     btnsubmitseldriver.setOnClickListener(this);
     //tvTitle.setText("请选择车型车长");
     xrseldriver.setPullRefreshEnabled(true);
     xrseldriver.setLoadingMoreEnabled(true);
     //xrseldriver.addFootView(View view, int footerHeight)
    
     CustomDecoration dividerItemDecoration = new CustomDecoration(activity, DividerItemDecoration.VERTICAL, R.drawable.message_divider_bg, 0);
     xrseldriver.addItemDecoration(dividerItemDecoration);
     LinearLayoutManager manager = new LinearLayoutManager(activity);
     manager.setOrientation(LinearLayoutManager.VERTICAL);
     xrseldriver.setLayoutManager(manager);
     xrseldriver.addItemDecoration(new RecycleViewDivider( activity, LinearLayoutManager.VERTICAL,1,"#D8D8EB"));
     xrseldriver.setAdapter(selDriverListAdapter);
     model.getSelDriverData(AndroidTool.getIMEI(activity),"1");
     xrseldriver.setLoadingListener(new XRecyclerView.LoadingListener (){
         private int i=1;
         @Override
         public void onRefresh() {
             i=1;
             flag=true;
             model.getSelDriverData(AndroidTool.getIMEI(activity),i+"");
             //刷新
             xrseldriver.refreshComplete();
         }
    

//这个会失效
@Override
public void onLoadMore() {
flag = false;
model.getSelDriverData(AndroidTool.getIMEI(activity),(++i)+"");
//加载更多
xrseldriver.loadMoreComplete();
}
});
//用这个实现上拉 加载更多数据
xrseldriver.addOnScrollListener(new RecyclerView.OnScrollListener() {
private int i=1;
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
int lastVisiblePosition = manager.findLastVisibleItemPosition();
if (lastVisiblePosition >= manager.getItemCount() - 1) {
flag = false;
model.getSelDriverData(AndroidTool.getIMEI(activity),(++i)+"");
//加载更多
xrseldriver.loadMoreComplete();
}
}
}
});
//添加到popwidow中
setWidth(WindowManager.LayoutParams.MATCH_PARENT);
setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
setOutsideTouchable(true);
setContentView(view);
}

@Override
public void onClick(View v) {
    dismiss();
    switch (v.getId()) {
        case R.id.btnsubmitseldriver:
            name = tvnameseldriver.getText().toString();
            number = tvnoseldriver.getText().toString();
            if (number != null && !"".equals(number.trim())){
                number=number.trim();
            }
            if (name != null && !"".equals(name.trim())) {
                name = name.trim();
            }
            if (selDriver != null ) {
                selDriver.onSelDriver(name,number);
            }
            break;
        case R.id.btncancelseldriver:
            ToastUtil.showToast(activity, "cancel");
            break;
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值