RecyclerView

//main
public class MainActivity extends AppCompatActivity implements DataView {

private RecyclerView main_recyclerView;
private Adapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //初始化视图
    initView();
    //初始化数据
    initData();
}
private void initData() {
    new DataPresenter().onCreate(this).loadData();

}
//获取资源ID
private void initView() {
    main_recyclerView = findViewById(R.id.main_recyclerview);
    //创建适配器Adapter
    adapter = new Adapter(MainActivity.this);
    main_recyclerView.setAdapter(adapter);
    //设置布局管理器
    main_recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this,OrientationHelper.VERTICAL,false));
    //Gridview
   // main_recyclerView.setLayoutManager(new GridLayoutManager(this,2));
}

//成功
@Override
public void success(List<DataEntity.DataBean> dataBeans) {
    adapter.setData(dataBeans);
}
//失败
@Override
public void defeated() {

}

}
//View层
public interface DataView {
void success(List<DataEntity.DataBean> dataBeans);
void defeated();
}
//OkHttpUtils
public class OkHttpUtils {
public static OkHttpUtils instance=new OkHttpUtils();

public static OkHttpUtils getInstance() {
    return instance;
}
public void getOkHttp(String path,final OkHttp okhttp){
    //创建OkHttpClient对象,设置读取,写入,连接超时
    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .readTimeout(10,TimeUnit.SECONDS)
            .writeTimeout(10,TimeUnit.SECONDS)
            .connectTimeout(10,TimeUnit.SECONDS)
            .build();
    //创建Request对象,设置请求方式,请求接口地址
    Request request = new Request.Builder()
            .get()
            .url(API.PATH)
            .build();
    //创建Call对象
    Call call = okHttpClient.newCall(request);
    //通过call调用enqueu方法 完成网络请求
    call.enqueue(new Callback() {
        //失败
        @Override
        public void onFailure(Call call, IOException e) {
            okhttp.defeated();
        }
        //成功
        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String result = response.body().string();
            okhttp.success(result);
        }
    });
}
//使用接口回调
public interface OkHttp{
    //成功
    void success(String result);
    //失败
    void defeated();
}

}
//API层
public class API {
public static final String PATH=“http://www.zhaoapi.cn/product/searchProducts?keywords=笔记本&page=1”;
}
//Presenter层
public class DataPresenter {
private DataView dataView;
private DataView mView;
//创建V层
public DataPresenter onCreate(DataView view) {
this.mView=view;
return this;
}
public void loadData(){
new DataModel().getData(OkHttpUtils.getInstance(), new DataModel.Callback() {
//成功
@Override
public void success(List<DataEntity.DataBean> data) {
mView.success(data);
}
//失败
@Override
public void defeated() {
mView.defeated();
}
});
}

}
//Model层
public class DataModel {
//解析数据
public void getData(OkHttpUtils httpUtils, final Callback callback) {
httpUtils.getOkHttp(API.PATH, new OkHttpUtils.OkHttp() {
//成功
@Override
public void success(String result) {
//解析数据
DataEntity dataEntity = new Gson().fromJson(result, DataEntity.class);
List<DataEntity.DataBean> data = dataEntity.getData();
callback.success(data);
}
//失败
@Override
public void defeated() {
callback.defeated();
}
});
}
//设置接口
public interface Callback{
//成功
void success(List<DataEntity.DataBean> data);
//失败
void defeated();
}
}
//Adapter
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private Context context;
private List<DataEntity.DataBean> dataBeans;

public Adapter(Context context) {
    this.context = context;
    dataBeans=new ArrayList<>();
}

public void setData(List<DataEntity.DataBean> dataBeans) {
    this.dataBeans .clear();
    if (dataBeans!=null){
        this.dataBeans.addAll(dataBeans);
    }
    notifyDataSetChanged();
}

@NonNull
@Override
public Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = View.inflate(this.context, R.layout.recycler_view, null);
    ViewHolder viewHolder = new ViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull Adapter.ViewHolder viewHolder, int i) {
    viewHolder.title.setText(this.dataBeans.get(i).getTitle());
    //Glide
    String[] image1 = this.dataBeans.get(i).getImages().split("\\|");
    if (image1!=null&&image1.length>0){
        Glide.with(context).load(image1[0]).into(viewHolder.image);
    }else{
        viewHolder.image.setImageResource(R.mipmap.ic_launcher);
    }

}

@Override
public int getItemCount() {
    return this.dataBeans.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
    private TextView title;
    private ImageView image;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        title = itemView.findViewById(R.id.title);
        image = itemView.findViewById(R.id.image);
    }
}

}
//main布局

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.RecyclerView
android:id="@+id/main_recyclerview"
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
</android.support.v7.widget.RecyclerView>

***//recycler_view*** <?xml version="1.0" encoding="utf-8"?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值