islamdidarmd / easyadapter

An adapter to reduce time for writing boilerplate code and speed up build time for RecyclerView.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

EasyAdapter

An adapter to reduce time for writing boilerplate code and speed up build time for RecyclerView.

Demo

Installation (with Gradle)

Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

   allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

Step 2. Add the dependency

dependencies {
		implementation 'com.github.islamdidarmd:easyadapter:0.1.2'
	}

How to use

For general RecyclerView:

Java

 recyclerView.setAdapter(new EasyAdapter.Builder<Integer>()
                .setLayout(R.layout.row_list)
                .setData(Arrays.asList(1, 2, 3, 4))
                .setCallback(new Callback<Integer>() {
                    @Override
                    public void onBindViewHolder(@NonNull EasyAdapter.Companion.ViewHolder viewHolder, @NonNull View itemView, int position, Integer item) {
                        TextView tv = viewHolder.itemView.findViewById(R.id.textView);
                        tv.setText(item.toString());
                    }
                })
                .build());

Kotlin

recyclerView.adapter = EasyAdapter.Builder<Int>()
                .setLayout(R.layout.row_list)
                .setData(list)
                .setCallback(object : Callback<Int> {
                    override fun onBindViewHolder(viewHolder: EasyAdapter.Companion.ViewHolder, itemView: View, position: Int, item: Int) {
                        val tv: TextView = viewHolder.itemView.textView
                        tv.text = item.toString()
                    }
                })
                .build()

For RecyclerView with multiple section:

Java

recyclerView.setAdapter(new EasySectionedAdapter.Builder<Integer>()
                .setHeaderLayout(R.layout.row_header)
                .setChildLayout(R.layout.row_list)
                .setDataSet(Arrays.asList(Arrays.asList(1, 2, 3, 4), Arrays.asList(1, 2), Arrays.asList(1, 2, 3)))
                .setCallback(new SectionedCallback<Integer>() {
                    @Override
                    public void onBindHeader(@NotNull EasyAdapter.Companion.ViewHolder viewHolder, int section) {
                        viewHolder.itemView.setBackgroundColor(Color.BLACK);
                        TextView tv = viewHolder.itemView.findViewById(R.id.textView);
                        tv.setTextColor(Color.WHITE);
                        tv.setText("Header");
                    }

                    @Override
                    public void onBindChild(@NotNull EasyAdapter.Companion.ViewHolder viewHolder, int section, int positionInSection, int position, Integer item) {
                        TextView tv = viewHolder.itemView.findViewById(R.id.textView);
                        tv.setText(item.toString());
                        tv.setTextColor(Color.BLACK);
                        viewHolder.itemView.setBackgroundColor(Color.WHITE);
                    }
                })
                .build());

Kotlin

recyclerView.adapter = EasySectionedAdapter.Builder<Int>()
                .setHeaderLayout(R.layout.row_header)
                .setChildLayout(R.layout.row_list)
                .setDataSet(Arrays.asList(Arrays.asList(1, 2, 3, 4), Arrays.asList(1, 2), Arrays.asList(1, 2, 3)))
                .setCallback(object : SectionedCallback<Int> {
                    override fun onBindHeader(viewHolder: EasyAdapter.Companion.ViewHolder, section: Int) {
                        viewHolder.itemView.setBackgroundColor(Color.BLACK)
                        val tv = viewHolder.itemView.textView
                        tv.setTextColor(Color.WHITE)
                        tv.text = "Header for section $section"
                    }

                    override fun onBindChild(viewHolder: EasyAdapter.Companion.ViewHolder, section: Int, positionInSection: Int, position: Int, item: Int) {
                        val tv = viewHolder.itemView.textView
                        tv.text = item.toString()
                        tv.setTextColor(Color.BLACK)
                        viewHolder.itemView.setBackgroundColor(Color.WHITE)
                    }
                })
                .build()
    }

To update dataset use Adapter.updateDataSet() with your new dataset. For a complete example see sample app

About

An adapter to reduce time for writing boilerplate code and speed up build time for RecyclerView.

License:MIT License


Languages

Language:Kotlin 100.0%