Android仿京东商品分类
一.效果图
二.布局文件
activity_main.xml布局中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".activity.MainActivity">
<android.support.v7.widget.RecyclerView
android:overScrollMode="always"
android:id="@+id/left_recycler"
android:layout_width="100dp"
android:layout_height="match_parent" />
<android.support.v7.widget.RecyclerView
android:id="@+id/right_recycler"
android:fadingEdge="vertical"
android:layout_marginLeft="5dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
left_item.xml布局中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="50dp">
<TextView
android:id="@+id/left_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="djzjfvn z" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#999999" />
</RelativeLayout>
</LinearLayout>
在right_item.xml布局中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp">
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:textSize="25sp"
android:text="jdzhfbvzj" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recycleview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/name"
android:layout_marginTop="10dp" />
</RelativeLayout>
在rigth_item_child.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="szdjfhbnvzfl" />
</LinearLayout>
在MainActivity.java中
public class MainActivity extends AppCompatActivity implements ILeftview, IRightview {
private RecyclerView left_recycler;
private RecyclerView right_recycler;
private LeftPresenter leftPresenter;
private RightPresenter rightPresenter;
private LeftAdapter leftAdapter;
private RightAdapter rightAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
init();
leftPresenter.showLeft();
rightPresenter.showRight(1);
}
private void init() {
left_recycler = (RecyclerView) findViewById(R.id.left_recycler);
right_recycler = (RecyclerView) findViewById(R.id.right_recycler);
leftPresenter = new LeftPresenter(this);
rightPresenter = new RightPresenter(this);
}
@Override
public void successLf(final List<LeftBean.DataBean> result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
leftAdapter = new LeftAdapter(MainActivity.this);
//布局
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
left_recycler.setLayoutManager(linearLayoutManager);
left_recycler.setAdapter(leftAdapter);
result.get(0).setClick(true);//默认第一个选中
leftAdapter.setList(result);
//点击左侧实现右侧商品信息展示
leftAdapter.setOnItemLeftClckListener(new LeftAdapter.OnItemLeftClckListener() {
@Override
public void onItemLeftClck(int position) {
//让左右联动起来的
int cid = result.get(position).getCid();
rightPresenter.showRight(cid);
//当点击时显示当前条目的背景和文字的颜色
for (int i = 0; i < result.size(); i++) {
if (position == i) {
result.get(i).setClick(true);
} else {
result.get(i).setClick(false);
}
}
//更新视图(必须有)
leftAdapter.notifyDataSetChanged();
}
});
}
});
}
@Override
public void failerLf(String msg) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "获取失败", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void successRh(final List<RightBean.DataBean> result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
rightAdapter = new RightAdapter(MainActivity.this);
//布局
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
right_recycler.setLayoutManager(linearLayoutManager);
right_recycler.setAdapter(rightAdapter);
rightAdapter.setList(result);
}
});
}
@Override
public void failerRh(String msg) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "获取失败", Toast.LENGTH_SHORT).show();
}
});
}
}
在LeftAdapter中
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.MyViewHolder> {
private Context mcontext;
private List<LeftBean.DataBean> list = new ArrayList<>();
public LeftAdapter(Context mcontext) {
this.mcontext = mcontext;
}
public void setList(List<LeftBean.DataBean> result) {
this.list = result;
notifyDataSetChanged();
}
@Override
public LeftAdapter.MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(mcontext).inflate(R.layout.left_item, viewGroup, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(LeftAdapter.MyViewHolder myViewHolder, final int position) {
myViewHolder.left_name.setText(list.get(position).getName());
//判断点击与不点击的背景
if (list.get(position).isClick()) {
myViewHolder.mlayout.setBackgroundColor(Color.parseColor("#d43c3c"));
myViewHolder.left_name.setTextColor(Color.parseColor("#FFFFFF"));
} else {
myViewHolder.mlayout.setBackgroundColor(Color.parseColor("#FFFFFF"));
myViewHolder.left_name.setTextColor(Color.parseColor("#222222"));
}
}
@Override
public int getItemCount() {
return list.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
private final RelativeLayout mlayout;
private final TextView left_name;
public MyViewHolder(View itemView) {
super(itemView);
mlayout = itemView.findViewById(R.id.layout);
left_name = itemView.findViewById(R.id.left_name);
//点击条目
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemLeftClckListener.onItemLeftClck(getLayoutPosition());
}
});
}
}
//接口回调
public interface OnItemLeftClckListener {
void onItemLeftClck(int position);
}
private OnItemLeftClckListener onItemLeftClckListener;
public void setOnItemLeftClckListener(OnItemLeftClckListener onItemLeftClckListener) {
this.onItemLeftClckListener = onItemLeftClckListener;
}
}
在RightChildAdapter中
public class RightChildAdapter extends RecyclerView.Adapter<RightChildAdapter.MyViewHolder> {
private Context mcontext;
private List<RightBean.DataBean.ListBean> listChild;
public RightChildAdapter(Context mcontext, List<RightBean.DataBean.ListBean> listChild) {
this.mcontext = mcontext;
this.listChild = listChild;
}
@NonNull
@Override
public RightChildAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(mcontext).inflate(R.layout.rigth_item_child, viewGroup, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RightChildAdapter.MyViewHolder myViewHolder, int i) {
myViewHolder.mtitle.setText(listChild.get(i).getName());
Picasso.with(mcontext).load(listChild.get(i).getIcon()).into(myViewHolder.mIamge);
}
@Override
public int getItemCount() {
return listChild.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView mtitle;
ImageView mIamge;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
mIamge = (ImageView) itemView.findViewById(R.id.image);
mtitle = (TextView) itemView.findViewById(R.id.title);
}
}
}
在RightAdapter
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.MyViewHolder> {
private Context mcontext;
private List<RightBean.DataBean> list = new ArrayList<>();
public RightAdapter(Context mcontext) {
this.mcontext = mcontext;
}
public void setList(List<RightBean.DataBean> result) {
this.list=result;
notifyDataSetChanged();
}
@NonNull
@Override
public RightAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(mcontext).inflate(R.layout.right_item, viewGroup, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RightAdapter.MyViewHolder myViewHolder, int i) {
myViewHolder.mname.setText(list.get(i).getName());
//写下面recycler视图
List<RightBean.DataBean.ListBean> listchild = this.list.get(i).getList();
RightChildAdapter rightChildAdapter = new RightChildAdapter(mcontext, listchild);
GridLayoutManager gridLayoutManager = new GridLayoutManager(mcontext, 3);
myViewHolder.mRecyclerView.setLayoutManager(gridLayoutManager);
myViewHolder.mRecyclerView.setAdapter(rightChildAdapter);
}
@Override
public int getItemCount() {
return list.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
RecyclerView mRecyclerView;
TextView mname;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
mname = (TextView) itemView.findViewById(R.id.name);
mRecyclerView = (RecyclerView) itemView.findViewById(R.id.recycleview);
}
}
}