导入jar包
MyApp
public class MyApp extends Application{ @Override public void onCreate() { super.onCreate(); //初始化 x.Ext.init(this); x.Ext.setDebug(true);//设置显示日志 } }
清单文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="bw.com.bw_day01_xutils"> <!-- 2, 添加权限 --> <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"
GetDataActivity.java
/** * 需求: 通过xUtils 获取网络数据, 解析数据, 将数据显示在ListView 中 * * 1, 导入依赖和jar包 * 2, 添加权限 * 3, 初始化xUtils -- Application 的子类中 -- MyApp -- 在清单文件中引入App */ //TODO 加载页面 @ContentView(value = R.layout.activity_get_data) public class GetDataActivity extends AppCompatActivity { //TODO 初始化控件 @ViewInject(value = R.id.lv_id) private ListView mLv; //数据源 -- 网络获取 -- 实体类 private List<VMoive.DataBean> data; //适配器 private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //TODO 引入注解 x.view().inject(this); //TODO 重点: xUtils 获取网络数据 //声明请求参数( 下载地址); RequestParams params = new RequestParams("http://app.vmoiver.com/apiv3/post/getPostInCate?cateid=0&p=1"); //1参: 请求参数 ; 2参: 回调接口 x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String s) { //TODO 获取数据成功的回调方法 s -- 返回的json字符串 //解析数据 VMoive vMoive = new Gson().fromJson(s,VMoive.class); //得到数据源 data = vMoive.getData(); //初始化适配器 adapter = new MyAdapter(GetDataActivity.this,data); mLv.setAdapter(adapter); } @Override public void onError(Throwable throwable, boolean b) { //TODO 获取数据失败的回调方法 } @Override public void onCancelled(CancelledException e) { //TODO 取消的回调方法 } @Override public void onFinished() { //TODO 获取数据完成的方法 } }); } }MyAdapter.java
package bw.com.bw_day01_xutils.demo02; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import org.xutils.image.ImageOptions; import org.xutils.x; import java.util.List; import bw.com.bw_day01_xutils.R; /** * Created by Administrator on 2018/1/23. */ public class MyAdapter extends BaseAdapter { private Context context; private List<VMoive.DataBean> data; public MyAdapter(Context context,List<VMoive.DataBean> data) { this.context = context; this.data = data; } @Override public int getCount() { return data.size(); } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView==null) { convertView = LayoutInflater.from(context).inflate(R.layout.item_lv,parent,false); viewHolder = new ViewHolder(); viewHolder.tv = (TextView) convertView.findViewById(R.id.tv_id); viewHolder.iv = (ImageView) convertView.findViewById(R.id.iv_id); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } //赋值 -- 设置标题 viewHolder.tv.setText(data.get(position).getTitle()); // 加载图片 //图片的选项 ImageOptions options = new ImageOptions.Builder() .setFailureDrawableId(R.mipmap.ic_launcher)//加载失败显示的图片 .setLoadingDrawableId(R.mipmap.ic_launcher)//正在加载时显示的图片 .setUseMemCache(true)//设置缓存 .setCircular(true)//设置圆形图片 .setIgnoreGif(false)//设置是否忽略gif动画 .build(); x.image().bind(viewHolder.iv,data.get(position).getImage(),options); return convertView; } class ViewHolder { ImageView iv; TextView tv; } }
VMoive.java --- 实体类
页面:
activity_main.xml