网络请求的一些步骤和操作

第一个activity:
public class Main2Activity extends AppCompatActivity {


    private RecyclerView recycler;
    String url = "http://123.206.70.44:8080/atguigu/jsontest/test.json";
    private List<Bean.HotInfoBean> list;
    private MyAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initView();
        OkHttpManager();
    }


    private void initView() {
        recycler = (RecyclerView) findViewById(R.id.recycler);


        list = new ArrayList<Bean.HotInfoBean>();
        GridLayoutManager manager = new GridLayoutManager(Main2Activity.this,2, LinearLayoutManager.VERTICAL,false);
        recycler.setLayoutManager(manager);
        adapter = new MyAdapter(list,Main2Activity.this);


        recycler.setAdapter(adapter);


        adapter.setItemOnItem(new MyAdapter.Listener() {
            @Override
            public void click(View v, int postion) {


                String name = list.get(postion).getName();
                String figure = list.get(postion).getFigure();


                Intent intent = new Intent(Main2Activity.this, Main3Activity.class);
                intent.putExtra("name", name);
                intent.putExtra("figure", figure);


                startActivity(intent);


            }
        });


    }




    public void  OkHttpManager(){


        OkHttpUtils okHttpUtils = new OkHttpUtils();
        okHttpUtils.danAsync(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {


            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {


                String string = response.body().string();
                Gson gson = new Gson();
                Bean bean = gson.fromJson(string, Bean.class);


                list = bean.getHot_info();


                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {


                        adapter.but(list);
                    }
                });
            }
        });
    }
}




写一个工具类:
public class OkHttpUtils {


    private static OkHttpUtils utils = new OkHttpUtils();
    private static OkHttpClient client = new OkHttpClient();


    public OkHttpUtils() {
    }


    private static OkHttpUtils okHttpUtils(){
        return utils;
    }


    public void danAsync(String url, Callback callback){


        Request request = new Request.Builder().url(url).build();


        client.newCall(request).enqueue(callback);
    }


}


写适配器:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {


    private List<Bean.HotInfoBean> list;
    private Context context;
    private Listener listener;


    public MyAdapter(List<Bean.HotInfoBean> list, Context context) {
        this.list = list;
        this.context = context;
    }


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {


        View inflate = View.inflate(context, R.layout.item, null);
        ViewHolder holder = new ViewHolder(inflate);
        return holder;
    }


    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {


        Glide.with(context).load(list.get(position).getFigure()).into(holder.imageView);
        holder.textView.setText(list.get(position).getCover_price());


        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                listener.click(v, position);
            }
        });
    }


    interface Listener {
        void click(View v, int postion);
    }


    public void setItemOnItem(Listener listener) {
        this.listener = listener;
    }


    public void but(List<Bean.HotInfoBean> list1) {
        list.clear();
        list.addAll(list1);
        notifyDataSetChanged();
    }


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


    public class ViewHolder extends RecyclerView.ViewHolder {


        private final ImageView imageView;
        private final TextView textView;


        public ViewHolder(View itemView) {
            super(itemView);


            imageView = (ImageView) itemView.findViewById(R.id.imageview);
            textView = (TextView) itemView.findViewById(R.id.textview);
        }
    }
}


一个有轮播图的页面:
public class Main3Activity extends AppCompatActivity {


    private Banner banner;
    private TextView text;
    private List<String> listimage;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        initView();
    }


    private void initView() {
        banner = (Banner) findViewById(R.id.banner);
        text = (TextView) findViewById(R.id.text);


        banner.setImageLoader(new GlideImage());


        initDate();


        banner.setImages(listimage);
        banner.start();
    }


    private void initDate() {


        String string = getIntent().getStringExtra("name").toString();
        String string1 = getIntent().getStringExtra("figure").toString();


        listimage = new ArrayList<String>();


        for (int i = 0; i < 3; i++) {
            listimage.add(string1);
        }
        text.setText(string);
    }
}




再写一个图片加载的类:
public class GlideImage extends ImageLoader{
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {


        Glide.with(context).load(path).into(imageView);
    }
}




这里需要导一些依赖:
 compile 'com.android.support:design:25.0.1'
    compile 'com.github.bumptech.glide:glide:3.6.1'
    compile 'com.squareup.okhttp3:okhttp:3.8.1'
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.youth.banner:banner:1.4.9'
    testCompile 'junit:junit:4.12'


最后不要忘记添加网络权限 还有读写的权限。




还有post请求:
//http://apis.juhe.cn/goodbook/query?key=12eacb4c434f45020d399155be7bd1c3&catalog_id=246&rn=10&rn=10
String POST_URL = "http://apis.juhe.cn/goodbook/query?";
//    请求条件:key=12eacb4c434f45020d399155be7bd1c3&catalog_id=246&rn=10&rn=10
RequestBody requestBodyPost = new FormBody.Builder()
        .add("key", "12eacb4c434f45020d399155be7bd1c3")
        .add("catalog_id", "246")
        .add("rn", "10")
        .add("rn", "10")
        .build();
Request requestPost = new Request.Builder()
        .url(POST_URL)
        .post(requestBodyPost)
        .build();
client.newCall(requestPost).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {


    }


    @Override
    public void onResponse(Call call, Response response) throws IOException {
        final String string = response.body().string();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                tvShow.setText(string);
            }
        });
    }
});
apple 20:58:18 (多人发送)
http://blog.csdn.net/ming2316780/article/details/51598063
其实我也看不懂这个post请求 只是考试需要 以防万一 嘿嘿
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值