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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.