Last active
May 29, 2022 16:55
-
-
Save omeraydindev/209793d25d7933607f15d247ce46fc21 to your computer and use it in GitHub Desktop.
Revisions
-
omeraydindev revised this gist
May 29, 2022 . 1 changed file with 4 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,7 @@ /* * This is free and unencumbered software released into the public domain. * For more information, please refer to <http://unlicense.org/> */ import android.content.Context; import android.view.LayoutInflater; import android.view.View; -
omeraydindev revised this gist
May 29, 2022 . No changes.There are no files selected for viewing
-
omeraydindev revised this gist
May 29, 2022 . No changes.There are no files selected for viewing
-
omeraydindev revised this gist
May 29, 2022 . No changes.There are no files selected for viewing
-
omeraydindev revised this gist
May 29, 2022 . 2 changed files with 0 additions and 12 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1 +0,0 @@ This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,11 +0,0 @@ -
omeraydindev revised this gist
May 29, 2022 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1 @@ // -
omeraydindev created this gist
May 29, 2022 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,11 @@ FastAdapter(this, R.layout.item_stat_lv, list) { rootView, item, _ -> ItemStatLvBinding.bind(rootView).apply { deviceId.text = item.deviceId type.text = item.type time.text = item.time date.text = item.date country.text = item.country } }.into(binding.recyclerView) binding.recyclerView.layoutManager = LinearLayoutManager(context) This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,116 @@ package com.test; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.Collections; public class FastAdapter<T> { private final RVAdapter adapter; public FastAdapter(Context context, int resource, ArrayList<T> data, BindListener<T> bindListener) { adapter = new RVAdapter(context, resource, data, bindListener); } public void into(RecyclerView recyclerView) { into(recyclerView, false); } public void into(RecyclerView recyclerView, boolean dragDrop) { recyclerView.setAdapter(adapter); if (dragDrop) { attachDragDrop(recyclerView); } } public ArrayList<T> getList() { return adapter.mData; } public void refresh() { adapter.notifyDataSetChanged(); } public interface BindListener<T> { void onBind(View rootView, T item, int pos); } private void attachDragDrop(RecyclerView recyclerView) { ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END, 0) { @Override public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) { int fromPosition = viewHolder.getAdapterPosition(); int toPosition = target.getAdapterPosition(); Collections.swap(adapter.mData, fromPosition, toPosition); recyclerView.getAdapter().notifyItemMoved(fromPosition, toPosition); return false; } @Override public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {} }; ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback); itemTouchHelper.attachToRecyclerView(recyclerView); } private class RVAdapter extends RecyclerView.Adapter<RVAdapter.ViewHolder> { private final int resource; public final ArrayList<T> mData; private final LayoutInflater mInflater; private final BindListener<T> bindListener; public RVAdapter(Context context, int resource, ArrayList<T> data, BindListener<T> bindListener) { this.resource = resource; this.mInflater = LayoutInflater.from(context); this.mData = data; this.bindListener = bindListener; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = mInflater.inflate(resource, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { T item = getItem(position); bindListener.onBind(holder.root, item, position); } @Override public int getItemCount() { return mData.size(); } private class ViewHolder extends RecyclerView.ViewHolder { View root; ViewHolder(View itemView) { super(itemView); root = itemView; } } T getItem(int id) { return mData.get(id); } } }