点击左侧条目,右侧条目联动,简单RecylerView应用
点击左侧条目 之后右侧条目出来,右侧条目中是布局嵌套 ,也就是 在 RecylerView的子布局中 再写一个RecylerView控件,
然后在RecylerView的适配器中加载子布局中的RecylerView,切记,是在MVP 框架之后
依赖
//OKGO
implementation ‘com.lzy.net:okgo:3.0.4’
implementation ‘com.google.code.gson:gson:2.8.5’
//Glide加载图片
implementation ‘com.github.bumptech.glide:glide:3.7.0’
//导入Design包
implementation 'com.android.support:design:28.+'
implementation 'com.jcodecraeer:xrecyclerview:1.5.9'
//butterknife快速查找资源的依赖
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//RecyclerView简单方法
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
HomeActivity中的布局
<android.support.v7.widget.RecyclerView
android:id="@+id/home_recylerViewbuness"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="match_parent"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/home_recylerViewgood"
android:layout_width="0dp"
android:layout_weight="7"
android:layout_height="match_parent"/>
</LinearLayout>
HomeActivity中
public class HomeActivity extends AppCompatActivity implements IContract.IView {
@BindView(R.id.home_recylerViewbuness)
RecyclerView homeRecylerViewbuness;
@BindView(R.id.home_recylerViewgood)
RecyclerView homeRecylerViewgood;
private Presenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
ButterKnife.bind(this);
presenter = new Presenter();
presenter.attachView(this);
presenter.requestbunessData();
}
@Override
public void showBunessData(String responseData) {
Gson gson = new Gson();
BunessBean bunessBean = gson.fromJson(responseData, BunessBean.class);
final List<BunessBean.DataBean> data = bunessBean.getData();
LinearLayoutManager manager = new LinearLayoutManager(this);
homeRecylerViewbuness.setLayoutManager(manager);
//设置适配器
final MyBunessAdapter myBunessAdapter = new MyBunessAdapter(R.layout.item_buness,data);
//点击子条目 ,找到id,并展示右侧条目
myBunessAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
int cid = data.get(position).getCid();
Toast.makeText(HomeActivity.this, "点点"+cid, Toast.LENGTH_SHORT).show();
presenter.requestgoodsData(cid);
// myBunessAdapter.notifyDataSetChanged();
}
});
homeRecylerViewbuness.setAdapter(myBunessAdapter);
}
@Override
public void showGoodsData(String responseData) {
Toast.makeText(this, responseData, Toast.LENGTH_SHORT).show();
Gson gson = new Gson();
GoodsBean goodsBean = gson.fromJson(responseData, GoodsBean.class);
List<GoodsBean.DataBean> data = goodsBean.getData();
LinearLayoutManager manager = new LinearLayoutManager(this);
homeRecylerViewgood.setLayoutManager(manager);
//设置适配器
MyGoodsAdapter myGoodsAdapter = new MyGoodsAdapter(R.layout.item_good,data);
homeRecylerViewgood.setAdapter(myGoodsAdapter);
}
}
**适配器MyBunessAdapter **
public class MyBunessAdapter extends BaseQuickAdapter<BunessBean.DataBean,BaseViewHolder> {
public MyBunessAdapter(int layoutResId, @Nullable List<BunessBean.DataBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, BunessBean.DataBean item) {
helper.setText(R.id.buness_text,item.getName());
}
}
**适配器MyBunessAdapter对应的布局 **
<TextView
android:id="@+id/buness_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
android:gravity="center"/>
</LinearLayout>
**设置适配器MyGoodsAdapter **
public class MyGoodsAdapter extends BaseQuickAdapter<GoodsBean.DataBean,BaseViewHolder> {
private RecyclerView goods;
public MyGoodsAdapter(int layoutResId, @Nullable List<GoodsBean.DataBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, GoodsBean.DataBean item) {
helper.setText(R.id.good_text,item.getName());
//加载子布局
goods = helper.getView(R.id.goodsRecylerView);
//RecylerView中的RecylerView
List<GoodsBean.DataBean.ListBean> list = item.getList();
LinearLayoutManager manager = new LinearLayoutManager(mContext);
goods.setLayoutManager(manager);
//设置适配器
AdapterGoods adapterGoods = new AdapterGoods(R.layout.item_item_goods,list);
goods.setAdapter(adapterGoods);
}
}
MyGoodsAdapter 对应的布局
<TextView
android:id="@+id/good_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
android:gravity="center"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/goodsRecylerView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
AdapterGoods 适配器
class AdapterGoods extends BaseQuickAdapter<GoodsBean.DataBean.ListBean,BaseViewHolder> {
public AdapterGoods(int layoutResId, @Nullable List<GoodsBean.DataBean.ListBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, GoodsBean.DataBean.ListBean item) {
helper.setText(R.id.item_text,item.getName());
Glide.with(mContext).load(item.getIcon()).into((ImageView) helper.getView(R.id.item_image));
}
}
AdapterGoods 对应布局
<TextView
android:id="@+id/item_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="测试"
/>
<ImageView
android:id="@+id/item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
这样基本上就写完了