效果图:两个RecyclerView联动,点击左边右边切换到对应的内容
接口:玩Android项目的接口
package com.lmc.dingdangpad.activity;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.lmc.dingdangpad.R;
import com.lmc.dingdangpad.adapter.TabAdapter;
import com.lmc.dingdangpad.adapter.TestAdapter;
import com.lmc.dingdangpad.bean.ListDataBean;
import com.lmc.dingdangpad.bean.TabBean;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
import java.util.List;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public class TestActivity extends AppCompatActivity {
private RecyclerView tab_recycler;
private RecyclerView recycler_view;
private TabAdapter tabAdapter;
private TestAdapter adapter;
private int pageId;
private int page = 1;
private List<ListDataBean.DataBean.DatasBean> listData;
private List<TabBean.DataBean> tabData;
private SmartRefreshLayout smart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
initView();
initData();
initListData();
}
private void initListData() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ApiService.listDataUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
ApiService service = retrofit.create(ApiService.class);
service.getListData(page, pageId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ListDataBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ListDataBean listDataBean) {
listData = listDataBean.getData().getDatas();
if(page==1){
smart.finishRefresh();
adapter.setList(listData);
}else{
smart.finishLoadMore();
adapter.loadMoreData(listData);
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
private void initData() {
Retrofit build = new Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(ApiService.listDataTabUrl)
.build();
final ApiService apiService = build.create(ApiService.class);
apiService.getListDataTab().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<TabBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(TabBean tabBean) {
tabData = tabBean.getData();
tabAdapter.setData(tabData);
tabAdapter.setClickItem(new TabAdapter.ClickItem() {
@Override
public void getClickItem(int pos) {
pageId = tabData.get(pos).getId();
initListData();
}
});
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
private void initView() {
tab_recycler = (RecyclerView) findViewById(R.id.tab_recycler);
recycler_view = (RecyclerView) findViewById(R.id.recycler_view);
smart = (SmartRefreshLayout) findViewById(R.id.smart);
tab_recycler.setLayoutManager(new LinearLayoutManager(this));
tabAdapter = new TabAdapter(TestActivity.this);
tab_recycler.setAdapter(tabAdapter);
tab_recycler.setEnabled(true);
recycler_view.setLayoutManager(new LinearLayoutManager(this));
adapter = new TestAdapter(this);
recycler_view.setAdapter(adapter);
smart.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
page++;
initListData();
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
page = 1;
initListData();
}
});
}
}