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中关联上@Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(BuildConfig.DEBUG); }4:根据接口请求数据,得到的json串用来创建解析的bean类
5:主main类6:适配器类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() { //完成 } }); } }
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; } }