Add fast scroll for lists

This commit is contained in:
NekoInverter 2020-11-25 16:02:05 +08:00
parent adf339deaa
commit 7114fd6c28
No known key found for this signature in database
GPG Key ID: 280D6CCCF95715F9
6 changed files with 28 additions and 1 deletions

View File

@ -80,5 +80,6 @@ dependencies {
implementation 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar' implementation 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar'
implementation 'tech.rectifier.preferencex-android:preferencex-simplemenu:88f93154b2' implementation 'tech.rectifier.preferencex-android:preferencex-simplemenu:88f93154b2'
implementation 'me.zhanghai.android.appiconloader:appiconloader-glide:1.2.0' implementation 'me.zhanghai.android.appiconloader:appiconloader-glide:1.2.0'
implementation 'me.zhanghai.android.fastscroll:library:1.1.5'
compileOnly 'de.robv.android.xposed:api:82' compileOnly 'de.robv.android.xposed:api:82'
} }

View File

@ -22,6 +22,8 @@ import org.meowcat.edxposed.manager.adapters.CompatListAdapter;
import org.meowcat.edxposed.manager.databinding.ActivityBlackListBinding; import org.meowcat.edxposed.manager.databinding.ActivityBlackListBinding;
import org.meowcat.edxposed.manager.util.LinearLayoutManagerFix; import org.meowcat.edxposed.manager.util.LinearLayoutManagerFix;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
public class BlackListActivity extends BaseActivity implements AppAdapter.Callback { public class BlackListActivity extends BaseActivity implements AppAdapter.Callback {
private SearchView searchView; private SearchView searchView;
private AppAdapter appAdapter; private AppAdapter appAdapter;
@ -55,11 +57,15 @@ public class BlackListActivity extends BaseActivity implements AppAdapter.Callba
appAdapter.setHasStableIds(true); appAdapter.setHasStableIds(true);
binding.recyclerView.setAdapter(appAdapter); binding.recyclerView.setAdapter(appAdapter);
binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this)); binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this));
FastScrollerBuilder fastScrollerBuilder = new FastScrollerBuilder(binding.recyclerView);
if (!App.getPreferences().getBoolean("md2", false)) { if (!App.getPreferences().getBoolean("md2", false)) {
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this,
DividerItemDecoration.VERTICAL); DividerItemDecoration.VERTICAL);
binding.recyclerView.addItemDecoration(dividerItemDecoration); binding.recyclerView.addItemDecoration(dividerItemDecoration);
} else {
fastScrollerBuilder.useMd2Style();
} }
fastScrollerBuilder.build();
appAdapter.setCallback(this); appAdapter.setCallback(this);
handler.postDelayed(runnable, 300); handler.postDelayed(runnable, 300);
binding.swipeRefreshLayout.setOnRefreshListener(appAdapter::refresh); binding.swipeRefreshLayout.setOnRefreshListener(appAdapter::refresh);

View File

@ -41,6 +41,8 @@ import org.meowcat.edxposed.manager.util.RepoLoader;
import java.text.DateFormat; import java.text.DateFormat;
import java.util.Date; import java.util.Date;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
public class DownloadActivity extends BaseActivity implements RepoLoader.RepoListener, ModuleUtil.ModuleListener, SharedPreferences.OnSharedPreferenceChangeListener { public class DownloadActivity extends BaseActivity implements RepoLoader.RepoListener, ModuleUtil.ModuleListener, SharedPreferences.OnSharedPreferenceChangeListener {
private DownloadsAdapter adapter; private DownloadsAdapter adapter;
private String filterText; private String filterText;
@ -104,11 +106,15 @@ public class DownloadActivity extends BaseActivity implements RepoLoader.RepoLis
headersDecor.invalidateHeaders(); headersDecor.invalidateHeaders();
} }
}); });
FastScrollerBuilder fastScrollerBuilder = new FastScrollerBuilder(binding.recyclerView);
if (!App.getPreferences().getBoolean("md2", false)) { if (!App.getPreferences().getBoolean("md2", false)) {
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this,
DividerItemDecoration.VERTICAL); DividerItemDecoration.VERTICAL);
binding.recyclerView.addItemDecoration(dividerItemDecoration); binding.recyclerView.addItemDecoration(dividerItemDecoration);
} else {
fastScrollerBuilder.useMd2Style();
} }
fastScrollerBuilder.build();
} }

View File

@ -18,6 +18,8 @@ import org.meowcat.edxposed.manager.adapters.ScopeAdapter;
import org.meowcat.edxposed.manager.databinding.ActivityScopeListBinding; import org.meowcat.edxposed.manager.databinding.ActivityScopeListBinding;
import org.meowcat.edxposed.manager.util.LinearLayoutManagerFix; import org.meowcat.edxposed.manager.util.LinearLayoutManagerFix;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
public class ModuleScopeActivity extends BaseActivity implements AppAdapter.Callback { public class ModuleScopeActivity extends BaseActivity implements AppAdapter.Callback {
private SearchView searchView; private SearchView searchView;
private ScopeAdapter appAdapter; private ScopeAdapter appAdapter;
@ -51,11 +53,15 @@ public class ModuleScopeActivity extends BaseActivity implements AppAdapter.Call
appAdapter.setHasStableIds(true); appAdapter.setHasStableIds(true);
binding.recyclerView.setAdapter(appAdapter); binding.recyclerView.setAdapter(appAdapter);
binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this)); binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this));
FastScrollerBuilder fastScrollerBuilder = new FastScrollerBuilder(binding.recyclerView);
if (!App.getPreferences().getBoolean("md2", false)) { if (!App.getPreferences().getBoolean("md2", false)) {
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this,
DividerItemDecoration.VERTICAL); DividerItemDecoration.VERTICAL);
binding.recyclerView.addItemDecoration(dividerItemDecoration); binding.recyclerView.addItemDecoration(dividerItemDecoration);
} else {
fastScrollerBuilder.useMd2Style();
} }
fastScrollerBuilder.build();
appAdapter.setCallback(this); appAdapter.setCallback(this);
handler.postDelayed(runnable, 300); handler.postDelayed(runnable, 300);
binding.swipeRefreshLayout.setOnRefreshListener(() -> appAdapter.refresh()); binding.swipeRefreshLayout.setOnRefreshListener(() -> appAdapter.refresh());

View File

@ -58,6 +58,8 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
import static android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS; import static android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS;
public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleListener { public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleListener {
@ -199,11 +201,15 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
moduleUtil.addListener(this); moduleUtil.addListener(this);
binding.recyclerView.setAdapter(adapter); binding.recyclerView.setAdapter(adapter);
binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this)); binding.recyclerView.setLayoutManager(new LinearLayoutManagerFix(this));
FastScrollerBuilder fastScrollerBuilder = new FastScrollerBuilder(binding.recyclerView);
if (!App.getPreferences().getBoolean("md2", false)) { if (!App.getPreferences().getBoolean("md2", false)) {
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this,
DividerItemDecoration.VERTICAL); DividerItemDecoration.VERTICAL);
binding.recyclerView.addItemDecoration(dividerItemDecoration); binding.recyclerView.addItemDecoration(dividerItemDecoration);
} else {
fastScrollerBuilder.useMd2Style();
} }
fastScrollerBuilder.build();
binding.swipeRefreshLayout.setOnRefreshListener(reloadModules::run); binding.swipeRefreshLayout.setOnRefreshListener(reloadModules::run);
reloadModules.run(); reloadModules.run();
mSearchListener = new SearchView.OnQueryTextListener() { mSearchListener = new SearchView.OnQueryTextListener() {

View File

@ -9,7 +9,9 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
public class RecyclerViewBugFixed extends RecyclerView { import me.zhanghai.android.fastscroll.FixItemDecorationRecyclerView;
public class RecyclerViewBugFixed extends FixItemDecorationRecyclerView {
public RecyclerViewBugFixed(@NonNull Context context) { public RecyclerViewBugFixed(@NonNull Context context) {