用RecyclerView请求网络数据

来源:互联网 发布:推广优化软件 编辑:程序博客网 时间:2024/06/06 04:49


我们找到一个简单的接口 用用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);    }}


阅读全文
0 0
原创粉丝点击