点击按钮来回切换列表和网格模式,效果如图
逻辑很简单,将数据请求下来后,用两个适配就可以来回切换,主要是数据一定要请求成功,特别是注意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—————
——