您的位置:首页 > 其它

RecyclerView+Volley的使用

2018-01-18 12:00 99 查看
Volley的请求队列
package com.animee.day21;

import android.app.Application;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

/**
* Created by Administrator on 2018/1/18.
*/

public class MyApp extends Application{
// 第一步:声明请求队列对象
private static RequestQueue queue;
@Override
public void onCreate() {
super.onCreate();
queue = Volley.newRequestQueue(getApplicationContext());
}

public static RequestQueue getHttpQueue(){
return queue;
}
}
   Volley  package com.animee.day21.demo01;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.animee.day21.MyApp;
import com.animee.day21.R;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class DemoActivity01 extends AppCompatActivity {
private List<InfoBean.DataBean.FeedlistBean> feedlist;
private RecyclerView rv;
private LinearLayoutManager manager;
private InfoAdapter adapter;
private String url = "http://interfacev5.vivame.cn/x1-interface-v5/json/newdatalist.json?platform=android&installversion=5.6.7.1&channelno=XMSDA2320480700&mid=88cbade258b8e25f2dc582d3e95e16d6&latlng=40.112442,116.244871&uid=11545120&sid=0d680d2b-240a-4b4e-8427-44ca9109d822&type=1&id=3&category=1&ot=0&nt=0";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo01);

rv = (RecyclerView) findViewById(R.id.rv_demo01);
// 设置布局管理者
manager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
rv.setLayoutManager(manager);
// 数据源
feedlist = new ArrayList<>();
// 设置适配器
adapter = new InfoAdapter(this,feedlist);
rv.setAdapter(adapter);
loadWebData(url);
}

private void loadWebData(String url) {
// 开始使用volley获取数据
// 第二部:选择请求对象
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) { //onPostExecute
Gson gson = new Gson();
InfoBean infoBean = gson.fromJson(s, InfoBean.class);
List<InfoBean.DataBean.FeedlistBean> list = infoBean.getData().getFeedlist();
feedlist.addAll(list);
adapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {

}
});
// 第三部:把请求对象加入到请求的队列当中
MyApp.getHttpQueue().add(request);
// 注意两点: 1.网络权限 2,清单文件当中注册自定义的application子类
}
}
   RecyclerView的适配器    package com.animee.day21.demo01;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.animee.day21.R;
import com.squareup.picasso.Picasso;

import java.util.List;

/**
* Created by Administrator on 2018/1/18.
*/

public class InfoAdapter extends RecyclerView.Adapter<InfoAdapter.InfoViewHolder>{
private Context context;
private List<InfoBean.DataBean.FeedlistBean>mDatas;

public InfoAdapter(Context context, List<InfoBean.DataBean.FeedlistBean> mDatas) {
this.context = context;
this.mDatas = mDatas;
}

@Override
public InfoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(context).inflate(R.layout.item_rv_demo01,parent,false);
InfoViewHolder holder = new InfoViewHolder(itemView);
return holder;
}

@Override
public void onBindViewHolder(InfoViewHolder holder, int position) {
InfoBean.DataBean.FeedlistBean feedlistBean = mDatas.get(position);
holder.titleTv.setText(feedlistBean.getItems().get(0).getTitle());
Picasso.with(context).load(feedlistBean.getItems().get(0).getImg()).into(holder.iv);
}

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

class InfoViewHolder extends RecyclerView.ViewHolder{
ImageView iv;
TextView titleTv;
public InfoViewHolder(View itemView) {
super(itemView);
iv = (ImageView) itemView.findViewById(R.id.item_iv);
titleTv = (TextView) itemView.findViewById(R.id.item_tv);
}
}
}
   
   实体类为InfoBean,每个人的实体类都不一样,所以自己创建    权限
  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.animee.day21">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".demo01.DemoActivity01" />
<activity android:name=".demo02.DemoActivity02"></activity>
</application>

</manifest>     布局     <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.animee.day21.demo01.DemoActivity01">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_demo01"
android:layout_width="match_parent"
android:layout_height="match_parent">

</android.support.v7.widget.RecyclerView>
</RelativeLayout>
    子布局    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">

<TextView
android:id="@+id/item_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="18sp"
android:ellipsize="end"
android:singleLine="true"
android:textColor="@color/colorPrimary"/>

<ImageView
android:id="@+id/item_iv"
android:layout_width="match_parent"
android:layout_height="220dp"
android:scaleType="centerCrop"
app:srcCompat="@mipmap/ic_launcher" />
</LinearLayout>    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: