demo for swapAdapter

public class MainActivity extends AppCompatActivity {
    RecyclerView recyclerView;
    BaseAdapter adapter1,adapter2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView = $(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));

        adapter1 = new BaseAdapter(Source.get("left"));
        adapter2 = new BaseAdapter(Source.get("right"));

        Button button1 = $(R.id.button1);
        Button button2 = $(R.id.button2);

        recyclerView.setAdapter(adapter1);


        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                recyclerView.swapAdapter(adapter1,false);
            }
        });
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                recyclerView.swapAdapter(adapter2,false);
            }
        });
    }

    @SuppressWarnings("unchecked")
    public <T> T $(int resId) {
        return (T) findViewById(resId);
    }

    class BaseAdapter extends RecyclerView.Adapter{
        List<String> data;

        public BaseAdapter(List<String> data) {
            super();
            this.data = data;
        }

        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new BaseViewHolder(new TextView(parent.getContext()));
        }

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            ((BaseViewHolder) holder).render(data.get(position));
        }

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

        class BaseViewHolder extends RecyclerView.ViewHolder{
            TextView textView;
            public BaseViewHolder(View itemView) {
                super(itemView);
                textView = ((TextView) itemView);
            }
            public void render(String name){
                textView.setText(name);

            }
        }
    }

    static class Source{

        public static List<String> get(String name){
            List<String> list = new ArrayList<>();

            int size = (int) (10 + Math.random() * 100);
            for (int i = 0; i < size; i++) {
                list.add(name + i);
            }
            return list;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容