RecyclerView点击切换布局

来源:互联网 发布:手机版刷屏软件 编辑:程序博客网 时间:2024/06/05 18:18

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

逻辑很简单,将数据请求下来后,用两个适配就可以来回切换,主要是数据一定要请求成功,特别是注意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—————

——







原创粉丝点击