联网工具类
//发送主线程
public class HttpUtil {
@SuppressLint("HandlerLeak")
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
public HttpUtil() {
}
public HttpUtil get(String url) {
OkHttpClient okHttpClient = new OkHttpClient();
StringBuilder stringBuilder = new StringBuilder();
String s = stringBuilder.toString();
RequestBody requestBody = RequestBody.create(MediaType.parse("application charset=utf-8"), s);
Request request = new Request.Builder().url(url).post(requestBody).build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
handler.post(new Runnable() {
@Override
public void run() {
try {
getData.Feast(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
});
return this;
}
//实例化
private GetData getData;
public void setGetData(GetData getData) {
this.getData = getData;
}
//接口
public interface GetData {
void Feast(String s);
}
}
RecyclerView适配器
public class ReAdapter extends RecyclerView.Adapter<ReAdapter.MyViewHolder> {
private Context context;
private List<Bean.DataBean> list = new ArrayList<>();
public ReAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflate = LayoutInflater.from(context).inflate(R.layout.re_item, parent, false);
MyViewHolder holder = new MyViewHolder(inflate);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.mtxt.setText(list.get(position).getName());
Picasso.with(context).load(list.get(position).getIcon()).into(holder.mpic);
}
@Override
public int getItemCount() {
return list.size();
}
//获取List
public void setList(List<Bean.DataBean> list) {
this.list = list;
notifyDataSetChanged();
}
//自定义ViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView mpic;
TextView mtxt;
public MyViewHolder(View itemView) {
super(itemView);
mpic = itemView.findViewById(R.id.pic);
mtxt = itemView.findViewById(R.id.item_txt);
}
}
}
main方法
public class MainActivity extends AppCompatActivity {
private RecyclerView mRe;
private String url = "http://www.zhaoapi.cn/product/getCatagory";
private ReAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initdata();
//布局
LinearLayoutManager manager = new LinearLayoutManager(this);
mRe.setLayoutManager(manager);
adapter = new ReAdapter(this);
mRe.setAdapter(adapter);
}
//获取
private void initdata() {
new HttpUtil().get(url).setGetData(new HttpUtil.GetData() {
@Override
public void Feast(String s) {
Gson gson = new Gson();
Bean bean = gson.fromJson(s, Bean.class);
List<Bean.DataBean> data = bean.getData();
adapter.setList(data);
}
});
}
//初始化控件
private void initView() {
mRe = findViewById(R.id.re);
}
}