首选需要导入的是Xutils和Gosn包
compile 'com.google.code.gson:gson:2.8.0' compile 'org.xutils:xutils:3.5.0'
还有就是权限,因为我们需要从网上获取数据,所以一定不要忘了INTERNET。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>android:name=".MyApplication"
接下来就是布局了,main_activity<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="demo.com.xutilsdemo.MainActivity"> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout>
需要展示的文字和图片,这个是自己设置的,想展示什么效果自己设置。取名item吧<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/news_title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" /> <ImageView android:id="@+id/pic_url" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout>
现在就是Class类了,因为因为我们用到了xutils,必须写这个类来设置一下吧。取名APPliction
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(BuildConfig.DEBUG); } }
主Actiicity类了,下面让代码来说话吧。
public class MainActivity extends AppCompatActivity { //封装的属性 private ListView lv; private List<Data.DataBean> list = new ArrayList<>(); private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 initView(); //xutils的网络请求 initLoad(); } /** * 获取的网络数据,通过Gson来解析 */ private void initLoad() { RequestParams params = new RequestParams("http://api.expoon.com/AppNews/getNewsList/type/1/p/2"); x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Gson gson = new Gson(); Data data = gson.fromJson(result, Data.class); list.addAll(data.getData()); adapter.notifyDataSetChanged(); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } /** * 把获取的数据在List上面展示 */ private void initView() { lv = (ListView) findViewById(R.id.lv); adapter = new MyAdapter(); lv.setAdapter(adapter); } /** * 适配器,给Listview展示数据,做下优化。 */ class MyAdapter extends BaseAdapter { @Override public int getCount() { return list == null ? 0 : list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = View.inflate(MainActivity.this, R.layout.item, null); holder = new ViewHolder(); holder.news_title = (TextView) convertView.findViewById(R.id.news_title); holder.pic_url = (ImageView) convertView.findViewById(R.id.pic_url); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.news_title.setText(list.get(position).getNews_title()); x.image().bind(holder.pic_url, list.get(position).getPic_url()); return convertView; } } class ViewHolder { TextView news_title; ImageView pic_url; } }