拦截器 RecyclerView 长按 点击 多条目

本文介绍如何在Android应用中使用OkHttp的拦截器进行网络请求的预处理和后处理,以及如何创建一个自定义的RecyclerView适配器来展示从网络获取的数据。通过示例代码,读者可以了解到OkHttp拦截器的实现方式和RecyclerView适配器的创建过程。

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

   OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addNetworkInterceptor(getAppInterceptor())
                .build();

 

   //拦截器
    private static Interceptor getAppInterceptor(){
        Interceptor interceptor = new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request request = chain.request();
                Log.i("aaa","--------"+"拦截前");
                Response response = chain.proceed(request);
                Log.i("aaa","--------"+"拦截后");
                return response;
            }
        };
        return interceptor;
    }

 适配器

package com.bw.zsd.zhangsaida0218.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.bw.zsd.zhangsaida0218.R;
import com.bw.zsd.zhangsaida0218.bean.Json;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;

import static android.icu.lang.UCharacter.GraphemeClusterBreak.V;

/**
 * @Auther: ZSD
 * @Date: 2019/2/18 0018 09:33:30
 * @Description:
 */
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>  {
    private List<Json.DataBeanX.DataBean> list;
    private Context context;
    private final static int TYPE_ONE = 0;
    private final static int TYPE_TWO = 1;
    private String a;
    private String s1;
    public MyAdapter(List<Json.DataBeanX.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }
    @Override
    public int getItemViewType(int position) {
        if ((position + 1 )% 4 == 0) {
            return TYPE_ONE;
        }else {
            return TYPE_TWO;
        }
    }
    @NonNull
    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        if (i == TYPE_TWO) {
            View view = LayoutInflater.from(context).inflate(R.layout.item, null,false);
            return new ViewHolder(view);
        }else {
             View view = LayoutInflater.from(context).inflate(R.layout.item2, null,false);
            return new ViewHolder(view);
        }
    }
    @Override
    public void onBindViewHolder(@NonNull final MyAdapter.ViewHolder viewHolder, final int i) {
        List<String> s = list.get(i).getPics();
        for (int j = 0; j < s.size(); j++) {
            s1 = s.get(j);
        }
        a = "http://365jia.cn/uploads/" + s1;
        if (getItemViewType(i)== TYPE_TWO) {
            //标题
            viewHolder.textView.setText(list.get(i).getTitle()+"");
            //图片
            ImageLoader.getInstance().displayImage(a, viewHolder.imageView);
        }else {
            ImageLoader.getInstance().displayImage(a, viewHolder.imageView2);
        }
        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int adapterPosition = viewHolder.getAdapterPosition();
                View view = viewHolder.itemView;
                if (onItemClickLinsenter != null) {
                    onItemClickLinsenter.getOnItemClickLinsenter(view,adapterPosition);
                }
            }
        });
        viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                int adapterPosition = viewHolder.getAdapterPosition();
                View view = viewHolder.itemView;
                if (onItemLongClickLinsenter != null) {
                    onItemLongClickLinsenter.getOnItemLongClickLinsenter(view,adapterPosition);
                }
                return true;
            }
        });
    }

    @Override
    public int getItemCount() {
        //判断不为空
        if (list != null) {
            return list.size();
        } else {
            return 0;
        }
    }
    public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView textView;
        private ImageView imageView;
        private  ImageView imageView2;
        public ViewHolder(@NonNull View view) {
            super(view);
            //获取id
            imageView2 = view.findViewById(R.id.image2);
            textView = view.findViewById(R.id.text1);
            imageView = view.findViewById(R.id.image1);
        }
    }
    public interface OnItemClickLinsenter{
        void getOnItemClickLinsenter(View view,int i);
    }
    public interface OnItemLongClickLinsenter{
        void getOnItemLongClickLinsenter(View view,int i);
    }
    public OnItemClickLinsenter onItemClickLinsenter;
    public OnItemLongClickLinsenter onItemLongClickLinsenter;

    public void  setItemClickListener(OnItemClickLinsenter onItemClickLinsenter) {
        this.onItemClickLinsenter = onItemClickLinsenter;
    }
    public void setItemLongClickListener(OnItemLongClickLinsenter onItemLongClickLinsenter) {
        this.onItemLongClickLinsenter = onItemLongClickLinsenter;
    }
}

MainActivity

package com.bw.zsd.zhangsaida0218.view;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;

import com.bw.zsd.zhangsaida0218.R;
import com.bw.zsd.zhangsaida0218.adapter.MyAdapter;
import com.bw.zsd.zhangsaida0218.app.MyApp;
import com.bw.zsd.zhangsaida0218.bean.Json;
import com.bw.zsd.zhangsaida0218.presenter.RePresenter;
import com.bw.zsd.zhangsaida0218.presenter.RePresenterInterface;

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

public class MainActivity extends AppCompatActivity implements ReView{
    private ArrayList<Json.DataBeanX.DataBean> list = new ArrayList<>();
    private RecyclerView recyclerView;
    private RePresenterInterface rePresenterInterface;
    private MyAdapter adapter;
    private LinearLayoutManager layout;
    private Json s;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView = findViewById(R.id.RecyclerView1);
        //2.设置布局方式
        layout = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layout);  //线性布局
        recyclerView.addItemDecoration(new DividerItemDecoration(this,LinearLayout.VERTICAL));
        rePresenterInterface = new RePresenter(this);
        rePresenterInterface.getJsonString();

    }
    @Override
    public void onReshDesplay(Object o) {
        s = (Json) o;
        List<Json.DataBeanX.DataBean> data = s.getData().getData();
        list.addAll(data);
        adapter = new MyAdapter(list, MainActivity.this);
        recyclerView.setAdapter(adapter);
        adapter.setItemClickListener(new MyAdapter.OnItemClickLinsenter() {
            @Override
            public void getOnItemClickLinsenter(View view, int i) {
                Toast.makeText(MainActivity.this,"点击",Toast.LENGTH_LONG).show();
            }
        });
        adapter.setItemLongClickListener(new MyAdapter.OnItemLongClickLinsenter() {
            @Override
            public void getOnItemLongClickLinsenter(View view, int i) {
                if (i != list.size()) {
                list.remove(i);
                adapter.notifyDataSetChanged();
                Toast.makeText(MainActivity.this,"长按",Toast.LENGTH_LONG).show();
                }
            }
        });
    }
    //页面销毁时调用软引用销毁
    @Override
    protected void onDestroy() {
        super.onDestroy();
//        rePresenterInterface.deatchView
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值