XListView

这是一个关于使用XUtils库进行网络请求并结合Gson解析JSON数据的示例应用。该应用通过Fragment展示新闻列表,并实现了下拉刷新及上拉加载更多的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.yyq.nowday.fragment;


import java.util.ArrayList;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;

import com.google.gson.Gson;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.yyq.nowday.adapter.MyBeijingAdapter;
import com.yyq.nowday.bean.Recommend_Data;
import com.yyq.nowday.bean.Recommend_News;
import com.yyq.nowday.view.XListView;
import com.yyq.nowday.view.XListView.IXListViewListener;
import com.yyq.today_news.R;
import com.yyq.today_news.activity.WebView_Activity;

public class Beijing_Fragment extends Fragment implements IXListViewListener{

	private XListView mListView;
	private MyBeijingAdapter mAdapter;
	private List<Recommend_News> news;
	private List<Recommend_News> newslist=new ArrayList<Recommend_News>();
	private Handler mHandler;
	private int start = 0; //加载数据个数设置
	private static int refreshCnt = 0; //刷新数据重置个数设置
	private static String UELSTR="http://api.baiyue.baidu.com/sn/api/newchosenlist?qq-pf-to=pcqq.c2c";
	private View v;
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		internetGET();
		v = inflater.inflate(R.layout.beijing_fragment, null);
		init();
		getListener();
		return v;
	}
	/**
	 * 加载控件并设置mListView
	 */
	private void init() {
		mHandler = new Handler();
		mListView = (XListView)v. findViewById(R.id.xListView);
		mListView.setPullLoadEnable(true);
		mListView.setPullRefreshEnable(true);
	}
	/**
	 * 监听设置
	 */
	private void getListener() {
		mListView.setXListViewListener(this);
		mListView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				String url=newslist.get(arg2).getUrl();
				Intent intent=new Intent(getActivity(), WebView_Activity.class);
				intent.putExtra("url", url);
				startActivityForResult(intent, 1);
			}
		});
	}
	private void geneItems() {
		for (int i = 0; i != 7; ++i) {
			if (start>news.size()) {
				return;
			}else {
				newslist.add(news.get(++start));
			}
		}
	}
	private void onLoad() {
		mListView.stopRefresh();
		mListView.stopLoadMore();
		mListView.setRefreshTime("刚刚");
	}
	@Override
	public void onRefresh() {
		mHandler.postDelayed(new Runnable() {
			@Override
			public void run() {
				start = refreshCnt;
				newslist.clear();
				geneItems();
				onLoad();
			}
		}, 2000);
	}
	@Override
	public void onLoadMore() {
		mHandler.postDelayed(new Runnable() {
			@Override
			public void run() {
				geneItems();
				mAdapter.notifyDataSetChanged();
				onLoad();
			}
		}, 2000);
	}
	/**
	 * 网络请求并解析数据
	 */
	private void internetGET() {
		HttpUtils http = new HttpUtils();
		http.send(HttpMethod.GET,UELSTR,new RequestCallBack<String>(){
			@Override
			public void onSuccess(ResponseInfo<String> responseInfo) {
				String Sdata=responseInfo.result;
				Gson gson=new Gson();
				Recommend_Data data=gson.fromJson(Sdata, Recommend_Data.class);
				news = data.getData().getNews();
				geneItems();
				mAdapter = new MyBeijingAdapter(getActivity(), newslist);
				mListView.setAdapter(mAdapter);
			}
			@Override
			public void onFailure(HttpException error, String msg) {
			}
		});
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值