Xutils的使用和listview的显示网络数据

来源:互联网 发布:经典网络歌曲 编辑:程序博客网 时间:2024/05/22 06:10

1:在build.gradle中注册:一个是xutils的,一个是gson解析的,一个是glide显示图片的

  compile 'org.xutils:xutils:3.5.0'    compile 'com.google.code.gson:gson:2.8.1'    compile 'com.github.bumptech.glide:glide:4.0.0'2:在AndroidManifest.xml中注册网络权限
  compile 'org.xutils:xutils:3.5.0'    compile 'com.google.code.gson:gson:2.8.1'    compile 'com.github.bumptech.glide:glide:4.0.0'3:自定义App类继承 Application,实现oncreate方法,然后在AndroidManifest.xml中关联上
@Overridepublic void onCreate() {    super.onCreate();    x.Ext.init(this);    x.Ext.setDebug(BuildConfig.DEBUG);}
4:根据接口请求数据,得到的json串用来创建解析的bean类
5:主main类
package text.bwie.com.gong2;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.ListView;import com.google.gson.Gson;import org.xutils.common.Callback;import org.xutils.http.RequestParams;import org.xutils.view.annotation.ContentView;import org.xutils.view.annotation.ViewInject;import org.xutils.x;import java.util.ArrayList;import java.util.List;//通过xutils的解析方式,可以用@ContentView(R.layout.activity_main)来代替setContentView(R.layout.activity_main);@ContentView(R.layout.activity_main)public class MainActivity extends AppCompatActivity {    // @ViewInject(R.id.listview)来代替findviewbyid    @ViewInject(R.id.listview)     private ListView listview;    private MyAdapter adapter;
//集合的泛型要定义成自己的json解析的bean类    private List<Bean.DataBean> arr;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        x.view().inject(this);     //创建集合        arr=new ArrayList<>();       //创建适配求         adapter=new MyAdapter(this,arr);        listview.setAdapter(adapter);loadData(); }    private void loadData() {        //请求网络接口        RequestParams params=new RequestParams("放入自己的网络接口");        x.http().get(params, new Callback.CommonCallback<String>() {            @Override            public void onSuccess(String result) {                //在主线程中               // Log.e("onSuccess","onSuccess"+result);                Gson gson=new Gson();                //解析适配器   result就是网络请求下来的json                Bean bean = gson.fromJson(result, Bean.class);               // Log.e("onSuccess","onSuccess"+bean);                //将解析的json串加入集合               arr.addAll(bean.getData());                //刷新适配器              adapter.notifyDataSetChanged();            }            @Override            public void onError(Throwable ex, boolean isOnCallback) {            //发生错误                Log.e("onError","onError"+ex.getMessage());                }            @Override            public void onCancelled(CancelledException cex) {            //用户取消            }            @Override            public void onFinished() {            //完成            }        });    }}
6:适配器类

package text.bwie.com.gong2;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import org.xutils.view.annotation.ViewInject;import org.xutils.x;import java.util.List;/** * 类描述: * 姓名 :刘希鑫 */public class MyAdapter extends BaseAdapter {   private Context context;       private List<Bean.DataBean> arr;    public MyAdapter(Context context,List<Bean.DataBean> arr){        this.context = context;        this.arr = arr;    }       @Override       public int getCount() {           return arr==null?0:arr.size();       }       @Override       public Object getItem(int i) {           return arr.get(i);       }       @Override       public long getItemId(int i) {           return i;       }       @Override       public View getView(int i, View view, ViewGroup viewGroup) {          ViewHodle hodle;           if (view==null){               view=View.inflate(context,R.layout.list_layout,null);                 hodle=new ViewHodle();//           hodle.name=view.findViewById(R.id.name);//           hodle.url=view.findViewById(R.id.url);               x.view().inject(hodle,view);               view.setTag(hodle);           }else {           hodle= (ViewHodle) view.getTag();           }           Bean.DataBean bean=arr.get(i);           hodle.name.setText(bean.getName());           Glide.with(context).load(bean.getUrl()).into(hodle.url);           return view;       }       class ViewHodle{           @ViewInject(R.id.name)  TextView name;   @ViewInject(R.id.url)           ImageView url;       }}

原创粉丝点击