public class MyFragment extends Fragment implements IXListViewListener {
private Context context;
private String path;
private View v;
private XListView xlv;
// 创建存放data的集合
private ArrayList<Data> newslist = new ArrayList<Data>();
private MyXlvAdapter adapter;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
int num = msg.what;
News ns = (News) msg.obj;
if (num == 0) {
// 添加数据
newslist.addAll(ns.data);
} else if (num == 1) {
// 清空集合
newslist.clear();
// 添加数据
newslist.addAll(ns.data);
} else if (num == 2) {
// 添加
newslist.addAll(ns.data);
}
// 刷新适配器
adapter.notifyDataSetChanged();
// 停止
stopLoadOrRefresh();
};
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// 获取视图
v = inflater.inflate(R.layout.myfragment, null);
// 获取上下文对象
context = getActivity();
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
// 获取activity传过来的参数
Bundle bundle = getArguments();
// 请求的地址
path = bundle.getString("category");
// 获取控件
xlv = (XListView) v.findViewById(R.id.xlv);
// 设置xlv
SetAdapter();
// 获取数据
getData(0);
// 给xlistview设置监听
xlv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// 跳转至新闻详解的activity
Intent intent = new Intent(context, NewsActivity.class);
// 把地址传过去
intent.putExtra("webUrl", newslist.get(arg2 - 1).article_url);
// 开始跳转
startActivity(intent);
}
});
}
/**
* 设置xlistview 监听 适配器
*/
public void SetAdapter() {
// 开启下拉刷新
xlv.setPullLoadEnable(true);
// 开启上拉加载
xlv.setPullRefreshEnable(true);
// 设置监听
xlv.setXListViewListener(this);
// 设置适配器
adapter = new MyXlvAdapter(context, newslist);
xlv.setAdapter(adapter);
}
/**
* 获取数据
*/
private void getData(final int s) {
// 异步加载
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
// 请求数据
String json = NetWorkUtils.getstr(path);
return json;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
// 解析
Gson gson = new Gson();
News news = gson.fromJson(result, News.class);
// 发送一个消息
Message msg = new Message();
msg.what = s;
msg.obj = news;
handler.sendMessage(msg);
}
}.execute();
}
/**
* 停止
*/
public void stopLoadOrRefresh() {
// 把请求好的毫秒数换算成时间
Date date = new Date();
// 设置时间的格式
SimpleDateFormat sdformat = new SimpleDateFormat("MM-dd HH:mm");// 24小时制
String LgTime = sdformat.format(date);
// 停止加载
xlv.stopLoadMore();
// 停止刷新
xlv.stopRefresh();
// 最近一次的刷新时间
xlv.setRefreshTime(LgTime);
}
@Override
public void onRefresh() {
// TODO Auto-generated method stub
handler.postDelayed(new Runnable() {
public void run() {
getData(1);
}
}, 2000);
}
@Override
public void onLoadMore() {
// TODO Auto-generated method stub
handler.postDelayed(new Runnable() {
public void run() {
getData(2);
}
}, 2000);
}
}
第三方XlistView
最新推荐文章于 2022-01-26 15:33:50 发布