RecyclerViewはSwipeRefreshLayoutとBaseQuickAdapter万能アダプタを組み合わせて、ドロップダウン・リフレッシュとアップロードをより多く実現
7464 ワード
最初のステップjarパッケージのインポート
appディレクトリの下にあるbuild.gradleファイルに追加
プロジェクトディレクトリの下にあるbuild.gradleファイルに追加
これでプロジェクトにRecyclerviewと万能アダプタBaseQuickAdapterを使用できるようになりました
2つ目はもちろん新しいレイアウトをRecyclerviewに追加しました.ここではGoogle公式のドロップダウンリフレッシュコントロールSwipeRefreshLayoutに参加しました.
初期化コントロール各種属性の設定
データ・ソースの初期化に必要な万能アダプタの設定
アダプタの作成新しいクラス継承とBaseQuickAdapterの最初のパラメータは現在のデータソースタイプで、2番目のパラメータは次の内部クラス継承とBaseViewHodlerです.
ヘッダーの追加やデータの設定など、リストを追加してアニメーションを表示したり、item全体のクリックイベントやコントロールのクリックイベントを追加したりする機能
次に、ネットワークリクエストのロードデータをシミュレートします.
よし、このような頭があって、尾があって、ドロップダウンがあって更新して、上に引っ張ってもっと多くのrecyclerviewをロードして完成して、簡単でしょう!機能がたくさんあるので、時間があればまた探索しましょう!
見出し
デモを送る
https://download.csdn.net/download/chengxuyuanchaochao/10545453
appディレクトリの下にあるbuild.gradleファイルに追加
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.22'
implementation 'com.android.support:recyclerview-v7:27.1.1'
プロジェクトディレクトリの下にあるbuild.gradleファイルに追加
buildscript {
repositories {
jcenter()
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}
}
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
google()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
これでプロジェクトにRecyclerviewと万能アダプタBaseQuickAdapterを使用できるようになりました
2つ目はもちろん新しいレイアウトをRecyclerviewに追加しました.ここではGoogle公式のドロップダウンリフレッシュコントロールSwipeRefreshLayoutに参加しました.
初期化コントロール各種属性の設定
/**
* View
*/
private void initView() {
refreshLayout=findViewById(R.id.swipe_refresh);
recyclerView=findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager=new LinearLayoutManager(MainActivity.this);// listview recyclerview
recyclerView.setLayoutManager(layoutManager);// ,
refreshLayout.setColorSchemeResources(R.color.colorAccent);// SwipeRefreshLayout
}
}
データ・ソースの初期化に必要な万能アダプタの設定
アダプタの作成新しいクラス継承とBaseQuickAdapterの最初のパラメータは現在のデータソースタイプで、2番目のパラメータは次の内部クラス継承とBaseViewHodlerです.
public class MainActivityAdapter extends BaseQuickAdapter {
/**
*
* @param layoutResId recyclerview item
* @param data
*/
public MainActivityAdapter(int layoutResId, @Nullable List data) {
super(layoutResId, data);
}
/**
* onBindViewHolder
* @param helper
* @param item
*/
@Override
protected void convert(MyViewHodler helper, MainEntity item) {
// , activity
helper.setText(R.id.text_content,item.getNaem()).addOnClickListener(R.id.text_content);
}
class MyViewHodler extends BaseViewHolder{
private TextView text_content;
public MyViewHodler(View view) {
super(view);
text_content=view.findViewById(R.id.text_content);
}
}
}
/**
*
*/
private void initData() {
adapterListDate=new ArrayList<>();
adapter=new MainActivityAdapter(R.layout.activity_main_item,adapterListDate);
recyclerView.setAdapter(adapter);
}
ヘッダーの追加やデータの設定など、リストを追加してアニメーションを表示したり、item全体のクリックイベントやコントロールのクリックイベントを追加したりする機能
View view= LayoutInflater.from(MainActivity.this)
.inflate(R.layout.headview_layout,null);
adapter.addHeaderView(view);// , , ,
// adapter.addFooterView();
// ( )
adapter.openLoadAnimation();
//
// adapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);
// public static final int ALPHAIN = 0x00000001;
// public static final int SCALEIN = 0x00000002;
// public static final int SLIDEIN_BOTTOM = 0x00000003;
// public static final int SLIDEIN_LEFT = 0x00000004;
// public static final int SLIDEIN_RIGHT = 0x00000005;
//
recyclerView.postDelayed(new Runnable() {
@Override
public void run() {
// ,
refreshLayout.setRefreshing(true);
//
page=1;//page
loadDate(page);
}
}, 2000);
// SwipeRefreshLayout
refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
isLoadMore = false;
handler.postDelayed(new Runnable() {
@Override
public void run() {
//
page=1;
loadDate(page);
}
}, 2000);
}
});
adapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
@Override
public void onLoadMoreRequested() {
//
isLoadMore = true;
handler.postDelayed(new Runnable() {
@Override
public void run() {
//
page++;
loadDate(page);
}
}, 2000);
}
}, recyclerView);
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
// item ,
Toast.makeText(MainActivity.this," "+page+" " + position + " ",Toast.LENGTH_SHORT).show();
}
});
adapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
// ,
Toast.makeText(MainActivity.this," "+page+" " + position + " ",Toast.LENGTH_SHORT).show();
}
});
次に、ネットワークリクエストのロードデータをシミュレートします.
/**
*
*/
private void loadDate(int page) {
if (refreshLayout.isRefreshing()) {
refreshLayout.setRefreshing(false);
}
List date=new ArrayList<>();
//isLoadMore
if (isLoadMore) {
for (int i = 0; i <= 15; i++) {
date.add(" "+page+" " + i + " ");
}
adapterListDate.addAll(date);
adapter.notifyDataSetChanged();
// ,
adapter.loadMoreComplete();// ,
}else{
adapterListDate.clear();
for (int i = 0; i <= 15; i++) {
date.add(" "+page+" " + i + " ");
}
adapterListDate.addAll(date);
adapter.notifyDataSetChanged();
adapter.loadMoreComplete();
}
}
よし、このような頭があって、尾があって、ドロップダウンがあって更新して、上に引っ張ってもっと多くのrecyclerviewをロードして完成して、簡単でしょう!機能がたくさんあるので、時間があればまた探索しましょう!
見出し
デモを送る
https://download.csdn.net/download/chengxuyuanchaochao/10545453