RecyclerView

RecyclerView

一、导入依赖

implementation ‘com.android.support:recyclerview-v7:29.0.0’

工具类

public class OkHttpUtils {
    private OkHttpClient okHttpClient;
    private Handler handler = new Handler();

    private OkHttpUtils() {
        okHttpClient = new OkHttpClient.Builder().readTimeout(60 * 1000, TimeUnit.MILLISECONDS).writeTimeout(60 * 1000, TimeUnit.MILLISECONDS).build();

    }

    private static OkHttpUtils okHttpUtils = new OkHttpUtils();

    public static OkHttpUtils getInstance() {
        return okHttpUtils;
    }

    public void doget(String url, final OkCallBack okCallBack) {
        Request request = new Request.Builder().get().url(url).build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                final String message = e.getMessage();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        okCallBack.onError(message);
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String string = response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        okCallBack.onOk(string);
                    }
                });
            }
        });
    }
}

CallBack

public interface OkCallBack {
    void onError(String message);
    void onOk(String json);
}

监听接口

public interface MyListener {
    void onItemClick(int position, View view);
}

适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    private Context context;
    private List<JavaBean.DataBean> dataBeans;
    private MyListener myListener;

    public void setMyListener(MyListener myListener) {
        this.myListener = myListener;
    }

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


    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View inflate = LayoutInflater.from(context).inflate(R.layout.layout_item, null);
        return new MyViewHolder(inflate);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
        holder.textView1_item.setText(dataBeans.get(position).getTitle() + "");
        Glide.with(context).load(dataBeans.get(position).getPic()).into(holder.imageView_item);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myListener.onItemClick(position, v);
            }
        });
    }

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

    class MyViewHolder extends RecyclerView.ViewHolder {
        ImageView imageView_item;
        TextView textView1_item;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView_item = itemView.findViewById(R.id.img_item);
            textView1_item = itemView.findViewById(R.id.title_item);
        }
    }
}

Activity代码

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyId;
    private List<JavaBean.DataBean> dataBeans = new ArrayList<>();
    private MyAdapter myAdapter;

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyId = (RecyclerView) findViewById(R.id.recy_id);
        myAdapter = new MyAdapter(MainActivity.this, dataBeans);
        recyId.setAdapter(myAdapter);
        //必须设置的一种布局方式
        recyId.setLayoutManager(new LinearLayoutManager(this));
        //TODO分割线
        DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
        //自定义分割线样式
        dividerItemDecoration.setDrawable(getDrawable(R.drawable.ic_launcher_background));
        //动画
        DefaultItemAnimator defaultItemAnimator = new DefaultItemAnimator();
        //设置删除动画时长
        defaultItemAnimator.setRemoveDuration(1000);
        //设置移动动画
        defaultItemAnimator.setMoveDuration(1000);
        recyId.setItemAnimator(defaultItemAnimator);
        myAdapter.setMyListener(new MyListener() {
            @Override
            public void onItemClick(int position, View view) {
                Toast.makeText(MainActivity.this, "" + dataBeans.get(position).getTitle(), Toast.LENGTH_SHORT).show();
            }
        });
        //长按移动    横滑删除
        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
            @Override
            public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
                int i = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
                int i1 = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
                return makeMovementFlags(i, i1);
            }

            //响应用户拖拽实现上下滑动
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
                //通过viewHolder获得下标
                int adapterPosition = viewHolder.getAdapterPosition();
                int adapterPosition1 = target.getAdapterPosition();
                //交换位置
                Collections.swap(dataBeans, adapterPosition, adapterPosition1);
                myAdapter.notifyItemMoved(adapterPosition, adapterPosition1);
                return true;
            }

            //响应用户  左右滑动
            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
                int adapterPosition = viewHolder.getAdapterPosition();
                //删除数据
                dataBeans.remove(adapterPosition);
                //刷新删除
                myAdapter.notifyItemRemoved(adapterPosition);
            }
        });

        itemTouchHelper.attachToRecyclerView(recyId);

        OkHttpUtils.getInstance().doget("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1", new OkCallBack() {
            @Override
            public void onError(String message) {

            }

            @Override
            public void onOk(String json) {
                JavaBean javaBean = new Gson().fromJson(json, JavaBean.class);
                List<JavaBean.DataBean> data = javaBean.getData();
                dataBeans.addAll(data);
                myAdapter.notifyDataSetChanged();
            }
        });

    }
}

二、点击播放

创建接口

public interface DouyinListener {
    void MyListener(int position, View view);
}

创建适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private Context context;
    private List<DouyinBean.ListBean> listBeans;
    private DouyinListener douyinListener;

    public void setDouyinListener(DouyinListener douyinListener) {
        this.douyinListener = douyinListener;
    }

    public MyAdapter(Context context, List<DouyinBean.ListBean> listBeans) {
        this.context = context;
        this.listBeans = listBeans;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View inflate = LayoutInflater.from(context).inflate(R.layout.layout_item, null);
        return new ViewHolder(inflate);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        holder.textView_item.setText(listBeans.get(position).getText() + "");
        Glide.with(context).load(listBeans.get(position).getImage0()).into(holder.imageView_item);
        holder.imageView_item.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                douyinListener.MyListener(position, v);
            }
        });
    }

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


    class ViewHolder extends RecyclerView.ViewHolder {
        ImageView imageView_item;
        TextView textView_item;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView_item = itemView.findViewById(R.id.img_item);
            textView_item = itemView.findViewById(R.id.text_item);

        }
    }
}

播放Activity

public class VoidActivity extends AppCompatActivity {
    private VideoView videoId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_void);
        videoId = (VideoView) findViewById(R.id.video_id);
        String url = getIntent().getStringExtra("url");
        videoId.setVideoPath(url);
        videoId.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                videoId.start();
            }
        });
    }
}

Activity代码

public class MainActivity extends AppCompatActivity {
    private RecyclerView recylerId;

    private List<DouyinBean.ListBean> listBeans = new ArrayList<>();
    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recylerId = (RecyclerView) findViewById(R.id.recyler_id);
        myAdapter = new MyAdapter(this, listBeans);
        recylerId.setAdapter(myAdapter);
        myAdapter.setDouyinListener(new DouyinListener() {
            @Override
            public void MyListener(int position, View view) {
                Intent intent = new Intent(MainActivity.this, VoidActivity.class);
                //添加视频网址
                intent.putExtra("url", listBeans.get(position).getVideouri());
                startActivity(intent);
            }
        });
        recylerId.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
        OkGo.<String>get("http://api.budejie.com/api/api_open.php?a=list&c=data&type=1&page=1")
                .headers("User-Agent", "PostmanRuntime7.26.1")
                .execute(new StringCallback() {
                    @Override
                    public void onSuccess(Response<String> response) {
                        String body = response.body();
                        Toast.makeText(MainActivity.this, "" + body, Toast.LENGTH_SHORT).show();
                        DouyinBean douyinBean = new Gson().fromJson(body, DouyinBean.class);
                        List<DouyinBean.ListBean> list = douyinBean.getList();
                        listBeans.addAll(list);
                        myAdapter.notifyDataSetChanged();
                    }
                });
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值