package com.ali.recyclerviewdemo;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyClerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyClerView = findViewById(R.id.main_recycler);
Observable<Bean> login=RetrofitManager.getDefault().create(MainApi.class).login();
//被观察者在子线程处理数据
login.subscribeOn(Schedulers.io())
// 子线程
.observeOn(AndroidSchedulers.mainThread())
//
.subscribe(new Consumer<Bean>() {
private List<Bean.DataBean> data;
@Override
public void accept(Bean bean) throws Exception {
data = bean.getData();
//
final MyAdapter myAdapter = new MyAdapter(data,MainActivity.this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
recyClerView.setLayoutManager(linearLayoutManager);
recyClerView.setAdapter(myAdapter);
}
});
}
}
package com.ali.recyclerviewdemo;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private List<Bean.DataBean> data;
private Context context;
//public Context context;
//public MyAdapter(List<Bean.DataBean> data,Context context){
// this.data = data;
// this.data = data;
//
//
// }
public MyAdapter(List<Bean.DataBean> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycler, parent, false);
final MyViewHolder myViewHolder = new MyViewHolder(itemView);
return myViewHolder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
holder.itemContentTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onItemClickListener != null) {
onItemClickListener.onItemClick(v, position);
}
}
});
holder.itemContentTv.setText(data.get(position).getName());
String[] split = data.get(position).getIcon().split("\\|");
Uri parse = Uri.parse(split[0]);
holder.simpleDraweeView.setImageURI(parse);
}
@Override
public int getItemCount() {
return data.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
//viewHolder内部有一个itemView成员变量代表的就是整个item布局
private final TextView itemContentTv;
private SimpleDraweeView simpleDraweeView;
public MyViewHolder(final View itemView) {
super(itemView);
itemContentTv = itemView.findViewById(R.id.tv_item_content);
simpleDraweeView=itemView.findViewById(R.id.main_image);
}
}
//给RecyclerView设置条目点击监听
private OnItemClickListener onItemClickListener;
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
}
public class app extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
Bean
public interface MainApi {
@GET("product/getCatagory")
Observable<Bean>login();
}
package com.ali.recyclerviewdemo;
public class RetrofitManager {
private static String BASE_URL ="https://www.zhaoapi.cn/";
private Retrofit mRetrofit;
private static class SingleHolder {
private static final RetrofitManager _INSTANT = new RetrofitManager(BASE_URL);
}
public static RetrofitManager getDefault() {
return SingleHolder._INSTANT;
}
private RetrofitManager(String baseUrl) {
mRetrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(buildOkhttpClinet())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
private OkHttpClient buildOkhttpClinet() {
return new OkHttpClient.Builder()
.readTimeout(5, TimeUnit.SECONDS)
.build();
}
public <T> T create(Class<T> Clazz) {
return mRetrofit.create(Clazz);
}
}