RecyclerView点击切换布局

点击按钮来回切换列表和网格模式,效果如图

逻辑很简单,将数据请求下来后,用两个适配就可以来回切换,主要是数据一定要请求成功,特别是注意bean类一定要正确。

我用的是mvp框架,所以,数据可以很容易的调用,我的另一篇博客有写。


SharedPreferences记住状态,在onCreate()方法里面写
con = getSharedPreferences("isTrue", MODE_PRIVATE);
con.edit().commit();
数据请求成功后

public void getUserSuccess(final List<Bean.DataBean> data2) {

      //默认的列表模式
        main_rv = (RecyclerView) findViewById(R.id.main_rv);
        LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this);
        main_rv.setLayoutManager(manager);
        myListAdapter = new MyListAdapter(MainActivity.this, data2);
        main_rv.setAdapter(myListAdapter);

        //按钮的点击事件,点击切换布局
    main_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                boolean isTrue = con.getBoolean("isTrue", true);
                if(isTrue){
                    main_rv = (RecyclerView) findViewById(R.id.main_rv);
                    LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this);
                    main_rv.setLayoutManager(manager);
                    myListAdapter = new MyListAdapter(MainActivity.this, data2);
                    main_rv.setAdapter(myListAdapter);
                    //不要忘记提交
                    con.edit().putBoolean("isTrue",false).commit();

                }else{
                    main_rv = (RecyclerView) findViewById(R.id.main_rv);
                    GridLayoutManager manager = new GridLayoutManager(MainActivity.this,2);
                    main_rv.setLayoutManager(manager);
                    myGridAdapter = new MyGridAdapter(MainActivity.this, data2);
                    main_rv.setAdapter(myGridAdapter);
                    //不要忘记提交
                    con.edit().putBoolean("isTrue",true).commit();
                }
            }
        });

}//请求成功
下面是一个Adapter类,另一个网格模式的和这个写的一样,只是里面的控件改一下,其他的不变

public class MyListAdapter extends RecyclerView.Adapter<MyListAdapter.MyViewHolder>{
    private final Context context;
    private final List<Bean.DataBean> data;

    public MyListAdapter(Context context, List<Bean.DataBean> data) {
        this.context = context;
        this.data = data;

    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = View.inflate(context, R.layout.list_item, null);

        MyViewHolder holder = new MyViewHolder(view);

        return holder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        holder.list_tv.setText(data.get(position).getTitle());
        Glide.with(context).load(data.get(position).getImages().split("\\|")[0]).into(holder.list_iv);

    }

    @Override
    public int getItemCount() {
        if(data != null){
            return data.size();
        }else{
            return 0;
        }

    }

    public class MyViewHolder extends RecyclerView.ViewHolder{

        private final TextView list_tv;
        private final ImageView list_iv;

        public MyViewHolder(View itemView) {
            super(itemView);
            list_tv = itemView.findViewById(R.id.list_tv);
            list_iv = itemView.findViewById(R.id.list_iv);
        }
    }
}

——

——————end—————

——







猜你喜欢

转载自blog.csdn.net/color_0716/article/details/78340149
今日推荐