XRecycler

一.http
1.HttpConfig

  
public class HttpConfig {
    public static String goods_url ="http://www.93.gov.cn/93app/data.do";
}

2.OkLoadListener

  
public interface OkLoadListener {

    void okLoadSuccess(String json);
    void okLoadError(String error);
}

二.model
1.GoodsListener

  
public interface GoodsListener {

   void getSuccess(String json);
    void getError(String error);

}

2.IModel

 
public interface IModel {
    void getGoodsListData(String url, Map<String,String> map, GoodsListener goodsListener);

}

3.ModelImpl

public class ModelImpl implements IModel{
    @Override
    public void getGoodsListData(String url, Map<String, String> map, final GoodsListener goodsListener) {
        HttpUtils httpUtils = HttpUtils.getHttpUtils();
        httpUtils.okPost(url,map);
        httpUtils.setOkLoadListener(new OkLoadListener() {
            @Override
            public void okLoadSuccess(String json) {

                goodsListener.getSuccess(json);
            }

            @Override
            public void okLoadError(String error) {
                 goodsListener.getError(error);
            }
        });

    }
}

三.presenter
1.IPresenter

  
public interface IPresenter {

    void showGoodsListToView(IModel iModel, IMainView iMainView);

}

2.PresenterImpl

public class PresenterImpl implements IPresenter{
    private static final String TAG = "PresenterImpl-----";
    @Override
    public void showGoodsListToView(IModel iModel, final IMainView iMainView) {
        Map<String,String> map = new HashMap<>();
        map.put("channelId",iMainView.getContent()+"");
        map.put("startNum","0");
        iModel.getGoodsListData(HttpConfig.goods_url, map, new GoodsListener() {
            @Override
            public void getSuccess(String json) {
                Log.d(TAG, "getSuccess: "+json);
                Gson gson = new Gson();
                UserBean userBean = gson.fromJson(json, UserBean.class);
                List<UserBean.DataBean> data = userBean.getData();
                iMainView.showGoodsList(data);
            }

            @Override
            public void getError(String error) {
                Log.d(TAG, "getError: "+error);
            }
        });
    }
}

四.view
1.IMainView

  
public interface IMainView {

    void showGoodsList(List<UserBean.DataBean> list);
    int getContent();

}

2.MainActivity

 
public class MainActivity extends AppCompatActivity implements IMainView{

    private XRecyclerView xre;
    private PresenterImpl presenter;
    private int page = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
    }

    private void initData() {
       presenter = new PresenterImpl();
       presenter.showGoodsListToView(new ModelImpl(),this);

    }

    private void initView() {

       xre =  (XRecyclerView)findViewById(R.id.xRecyclerView);
        LinearLayoutManager lin = new LinearLayoutManager(this);
        xre.setLayoutManager(lin);

        xre.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                  initData();
                xre.refreshComplete();
                Toast.makeText(MainActivity.this,"page"+"-------",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onLoadMore() {
                   page++;
                   initData();
                xre.loadMoreComplete();
                Toast.makeText(MainActivity.this,page+"-------",Toast.LENGTH_SHORT).show();
            }
        });
        //xre.setPullRefreshEnabled(true);
        xre.setLoadingMoreEnabled(true);
    }

    @Override
    public void showGoodsList(List<UserBean.DataBean> list) {
        MyAdapter myAdapter = new MyAdapter(this,list);
        xre.setAdapter(myAdapter);
    }

    @Override
    public int getContent() {
            int s =page;
        return s;
    }

}
2.5 主方法对应的布局
  
<android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent">
<com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/xRecyclerView" android:layout_width="match_parent" android:layout_height="wrap_content"></com.jcodecraeer.xrecyclerview.XRecyclerView></android.support.constraint.ConstraintLayout>

3.MyAdapter (适配器)

  
public class MyAdapter extends XRecyclerView.Adapter<MyAdapter.MyViewHolder>{

    private Context context;
    private List<UserBean.DataBean> list;

    public MyAdapter(Context context, List<UserBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }


    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false);
        MyViewHolder myViewHolder = new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {
            Glide.with(context).load(list.get(position).getIMAGEURL()).into(holder.getImageView());
            holder.getTitle().setText(list.get(position).getTITLE());

        //长按删除
        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                AlertDialog.Builder builder = new  AlertDialog.Builder(context);
                builder.setTitle("删除");
                builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //得到下标
                        int pos = holder.getLayoutPosition();
                        System.out.println("pos----"+pos);
                        list.remove(pos);
                        //notifyDataSetChanged();
                        notifyItemRemoved(pos);//局部删除当前view并局部刷新
                    }
                });
                builder.setNeutralButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }
                });
                builder.show();
                return true;
            }
        });

    }

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

    class MyViewHolder extends XRecyclerView.ViewHolder{

        private TextView title;
        private ImageView imageView;

        public MyViewHolder(View itemView) {
            super(itemView);
           imageView = (ImageView) itemView.findViewById(R.id.tu);
          title = (TextView) itemView.findViewById(R.id.title);

        }

        public MyViewHolder(View itemView, TextView title, ImageView imageView) {
            super(itemView);
            this.title = title;
            this.imageView = imageView;
        }

        public TextView getTitle() {
            return title;
        }

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

        public ImageView getImageView() {
            return imageView;
        }

        public void setImageView(ImageView imageView) {
            this.imageView = imageView;
        }
    }
}

3.5  item_layout

  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/title"/>
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tu"/>

</LinearLayout>

五.权限

 
compile 'com.squareup.okhttp3:okhttp:3.10.0' compile 'com.github.bumptech.glide:glide:4.7.1' compile 'com.google.code.gson:gson:2.8.4' compile 'com.jcodecraeer:xrecyclerview:1.5.9'
configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.android.support') { if (!requested.name.startsWith("multidex")) { details.useVersion '25.2.0' } } }}
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值