用RecyclerView请求网络数据


我们找到一个简单的接口 用用RecyclerView请求网络数据展示出来

过程中要注意细节 导两个包 gson和Imageloder 添加网络请求权限 和 自定义application中的name

现在开始上干货吧!

======================================MianActivity===============================

package test.com.a20171008;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.io.Reader;

import test.com.a20171008.bran.Da;

public class MainActivity extends AppCompatActivity {
RecyclerView rv;
    Da da;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       //找控件 创建数据源
        rv= (RecyclerView) findViewById(R.id.rv);
        initRV();
    }
    public void initRV(){
        initData();
        //布局管理器
        LinearLayoutManager manager=new LinearLayoutManager(this);
       rv.setLayoutManager(manager);

    }
    public void initData(){
             new AsyncTask<String,String,String>(){

                 @Override
                 protected String doInBackground(String... strings) {
                     Reader reader=NetUtils.getNet("http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=one");
                     Gson gson=new Gson();
                     da=gson.fromJson(reader, Da.class);
                     return null;
                 }

                 @Override
                 protected void onPostExecute(String s) {
                    MyAdapter adapter=new MyAdapter();
                     rv.setAdapter(adapter);

                     super.onPostExecute(s);
                 }
             }.execute();
             }
    public class  MyAdapter extends  RecyclerView.Adapter<MyAdapter.MyViewHolder>{
        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view=View.inflate(MainActivity.this,R.layout.one_item,null);
            MyViewHolder holder=new MyViewHolder(view);
            return holder;
        }

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
             holder.tv1.setText(da.getData().get(position).getTitle());
            ImageLoader.getInstance().displayImage(da.getData().get(position).getImage_url(),holder.iv1);

        }

        @Override
        public int getItemCount() {
            return da==null?0:da.getData().size();
        }

        class MyViewHolder extends RecyclerView.ViewHolder{
            TextView tv1;
            ImageView iv1;
            public MyViewHolder(View itemView) {
                super(itemView);
                tv1=itemView.findViewById(R.id.tv1);
                iv1=itemView.findViewById(R.id.iv1);
            }
        }


    }
    }

==============================NetUtils==================================================
public class NetUtils {
    public NetUtils() {
        super();
    }
    public static Reader getNet(String path){
        Reader reader=null;
        try {
            URL url=new URL(path);
            HttpURLConnection conn= (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            int code=conn.getResponseCode();
            if (code==200){
                InputStream is=conn.getInputStream();
                reader=new InputStreamReader(is);

            }
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

        return  reader;
    }
}

====================================MyApp=====================================

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        File file = this.getCacheDir();

        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                this)
                // max width, max height,即保存的每个缓存文件的最大长宽
                .memoryCacheExtraOptions(480, 800)
                // 线程池内加载的数量
                .threadPoolSize(3)
                // 线程优先级
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .defaultDisplayImageOptions(options)
                // You can pass your own memory cache implementation你可以通过自己的内存缓存实现
                // .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
                // .memoryCacheSize(2 * 1024 * 1024)
                //硬盘缓存50MB
                .diskCacheSize(50 * 1024 * 1024)
                //将保存的时候的URI名称用MD5
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                // 加密
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())//将保存的时候的URI名称用HASHCODE加密
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .diskCacheFileCount(100) //缓存的File数量
                .diskCache(new UnlimitedDiscCache(file))// 自定义缓存路径
                // .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
                // .imageDownloader(new BaseImageDownloader(context, 5 * 1000,
                // 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超时时间
                .writeDebugLogs() // Remove for release app
                .build();

        ImageLoader.getInstance().init(config);
    }
}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值