RecyclerView分類頁面簡單使用 (之間傳值介面卡主頁面 整型id)
**
主頁面佈局
**
<?xml version="1.0" encoding="utf-8"?> <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:layout_width="150dp" android:layout_height="match_parent" android:id="@+id/recycler1" ></android.support.v7.widget.RecyclerView> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycler2" ></android.support.v7.widget.RecyclerView> </LinearLayout>
**
第一個條目佈局
**
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lin" android:layout_margin="15dp" android:orientation="horizontal"> <ImageView android:id="@+id/fenlei_img1" android:layout_width="50dp" android:layout_height="50dp" android:src="@mipmap/ic_launcher" /> <TextView android:id="@+id/fenlei1_text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" android:textColor="@color/colorPrimary" android:text="就是哪家" /> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:background="#000000"></View> </LinearLayout>
**
第二個條目佈局
**
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/lin2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="15dp" android:orientation="vertical"> <TextView android:id="@+id/fenlei01" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="看看看" /> <android.support.v7.widget.RecyclerView android:id="@+id/fenlei02" android:layout_width="match_parent" android:layout_height="wrap_content" /> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:background="#000000"></View> </LinearLayout> </LinearLayout> **
第三個條目佈局
**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lin3"
android:layout_margin="15dp"
android:orientation="vertical">
<ImageView
android:id="@+id/fenlei_img2"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/fenlei1_text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="@color/colorPrimary"
android:text="就是哪家" />
</LinearLayout>
</LinearLayout>
**
第一個介面卡
** import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.squareup.picasso.Picasso; import java.util.List;
public class MyAdapter1 extends RecyclerView.Adapter<MyAdapter1.MyViewhorder> {
private Context context;
private List<FenBean1.DataBean> list;
private OnItemClickLintent lintent;
public MyAdapter1(Context context, List<FenBean1.DataBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public MyViewhorder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context, R.layout.fenlei_item, null);
MyViewhorder myViewhorder = new MyViewhorder(view);
myViewhorder.fenlei1_text1 = view.findViewById(R.id.fenlei1_text1);
myViewhorder.fenlei_img1 = view.findViewById(R.id.fenlei_img1);
myViewhorder.lin = view.findViewById(R.id.lin);
return myViewhorder;
}
@Override
public void onBindViewHolder(@NonNull MyViewhorder myViewhorder, final int i) {
myViewhorder.fenlei1_text1.setText(list.get(i).getName());
Picasso.with(context).load(list.get(i).getIcon()).fit().into(myViewhorder.fenlei_img1);
myViewhorder.lin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
lintent.OnItem(list.get(i).getCid());
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewhorder extends RecyclerView.ViewHolder {
public MyViewhorder(@NonNull View itemView) {
super(itemView);
}
ImageView fenlei_img1;
TextView fenlei1_text1;
LinearLayout lin;
}
public void setOnItemClickLintent(OnItemClickLintent lintent) {
this.lintent = lintent;
}
public interface OnItemClickLintent {
void OnItem(int po);
}
} **
第二個介面卡
** import android.app.Activity; import android.content.Context; import android.content.Intent; import android.support.annotation.NonNull; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.squareup.picasso.Picasso; import java.util.List;
public class MyAdapter2 extends RecyclerView.Adapter<MyAdapter2.MyViewhorder> {
private Context context;
private List<FenBean2.DataBean> list;
public MyAdapter2(Context context) {
this.context = context;
}
public void setList(List<FenBean2.DataBean> list) {
this.list = list;
notifyDataSetChanged();
}
@NonNull
@Override
public MyViewhorder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context, R.layout.fenlei_item2, null);
MyViewhorder myViewhorder = new MyViewhorder(view);
myViewhorder.fenlei01 = view.findViewById(R.id.fenlei01);
myViewhorder.fenlei02 = view.findViewById(R.id.fenlei02);
return myViewhorder;
}
@Override
public void onBindViewHolder(@NonNull MyViewhorder myViewhorder, final int i) {
myViewhorder.fenlei01.setText(list.get(i).getName());
GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 3);
myViewhorder.fenlei02.setLayoutManager(gridLayoutManager);
MyAdapter3 myAdapter3 = new MyAdapter3(context, list.get(i).getList());
myViewhorder.fenlei02.setAdapter(myAdapter3);
myAdapter3.setOnItemClickLintent(new MyAdapter3.OnItemClickLintent() {
@Override
public void setpcid(int pcid, int pscid) {
// Toast.makeText(context,"pcid是"+pcid+"pscid是"+pscid,Toast.LENGTH_SHORT).show();
// Intent intent = new Intent(context, ShowActivity.class);
// intent.putExtra("pcid", pcid);
// intent.putExtra("pscid", pscid);
// ((Activity) context).startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewhorder extends RecyclerView.ViewHolder {
public MyViewhorder(@NonNull View itemView) {
super(itemView);
}
TextView fenlei01;
RecyclerView fenlei02;
}
} **
第三個介面卡
** import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.squareup.picasso.Picasso; import java.util.List;
public class MyAdapter3 extends RecyclerView.Adapter<MyAdapter3.MyViewhorder> {
private Context context;
private List<FenBean2.DataBean.ListBean> list;
private OnItemClickLintent lintent;
public MyAdapter3(Context context, List<FenBean2.DataBean.ListBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public MyViewhorder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context, R.layout.fenlei_item3, null);
MyViewhorder myViewhorder = new MyViewhorder(view);
myViewhorder.fenlei1_text2 = view.findViewById(R.id.fenlei1_text2);
myViewhorder.fenlei_img2 = view.findViewById(R.id.fenlei_img2);
myViewhorder.lin3 = view.findViewById(R.id.lin3);
return myViewhorder;
}
@Override
public void onBindViewHolder(@NonNull MyViewhorder myViewhorder, final int i) {
myViewhorder.fenlei1_text2.setText(list.get(i).getName());
Picasso.with(context).load(list.get(i).getIcon()).fit().into(myViewhorder.fenlei_img2);
myViewhorder.lin3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
lintent.setpcid(list.get(i).getPcid(),list.get(i).getPscid());
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewhorder extends RecyclerView.ViewHolder {
public MyViewhorder(@NonNull View itemView) {
super(itemView);
}
ImageView fenlei_img2;
TextView fenlei1_text2;
LinearLayout lin3;
}
public void setOnItemClickLintent(OnItemClickLintent lintent) {
this.lintent = lintent;
}
public interface OnItemClickLintent {
void setpcid(int pcid, int pscid);
}
} **
主頁面佈局(mvp框架)
**
import android.content.Context; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import com.google.gson.Gson; import com.mfy.text.demo04_mvp.R; import java.util.List;
//繼承appdelegaet 實現方法
public class MainActivityPersenter extends AppDelegate {
private Context context;
private RecyclerView recycler1;
private RecyclerView recycler2;
private String url1="放請求資料的網址";
//封裝一個預設的cid =1
private int cid=1;
@Override
public int getlayoutid() {
//返回本頁面佈局 R
return R.layout.activity_main;
}
//初始化上下文
@Override
public void initContext(Context context) {
//初始化上下文刪除這行
//this . 上下文=上下文 提上去
this.context=context;
}
@Override
public void initData() {
super.initData();
//獲取控制元件強轉上去
recycler1=(RecyclerView)get(R.id.recycler1);
recycler2=(RecyclerView)get(R.id.recycler2);
//new 線性佈局
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
//設定方向
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//給recycler設定線性佈局
recycler1.setLayoutManager(linearLayoutManager);
//請求網路資料1
dohttp1();
//第二個
//new 線性佈局
LinearLayoutManager linearLayoutManager2 = new LinearLayoutManager(context);
//設定方向
linearLayoutManager2.setOrientation(LinearLayoutManager.VERTICAL);
//給recycler設定線性佈局
recycler2.setLayoutManager(linearLayoutManager2);
//請求網路資料1 去上面封裝cid初始化=1
dohttp2(cid);
}
private void dohttp2(int cid) {
//拼接網址cid
String url2="放請求資料的網址"+cid;
//new 工具類
//new 工具類
new OkHttpUtil().get(url2).result(new OkHttpUtil.OkHttpListener() {
@Override
public void success(String s1) {
//new gson from bean 類
FenBean2 fenBean2 = new Gson().fromJson(s1, FenBean2.class);
//呼叫bean類集合
List<FenBean2.DataBean> data2 = fenBean2.getData();
//設定介面卡
MyAdapter2 myAdapter2=new MyAdapter2(context);
//設定集合方法給介面卡
myAdapter2.setList(data2);
//給recycler設定介面卡
recycler2.setAdapter(myAdapter2);
}
});
}
private void dohttp1() {
//new 工具類
new OkHttpUtil().get(url1).result(new OkHttpUtil.OkHttpListener() {
@Override
public void success(String s1) {
//new gson from bean 類
FenBean1 fenBean1 = new Gson().fromJson(s1, FenBean1.class);
//呼叫bean類的集合
List<FenBean1.DataBean> data1= fenBean1.getData();
//設定介面卡
MyAdapter1 myAdapter1=new MyAdapter1(context,data1);
//點選事件
myAdapter1.setOnItemClickLintent(new MyAdapter1.OnItemClickLintent() {
@Override
public void OnItem(int po) {
//在請求第二個網路資料 傳過來的值 就改這個
dohttp2(po);
}
});
//給recycler 設定介面卡
recycler1.setAdapter(myAdapter1);
}
});
}
}
兩個Bean 類省略