xutils解析网络数据

xutils解析网络数据_第1张图片




首选需要导入的是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 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() {
            @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;
    }
}

你可能感兴趣的:(网络获取数据)