package cn.eoe.app.view; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.TextView; import cn.eoe.app.R; import cn.eoe.app.biz.WikiDao; import cn.eoe.app.entity.WikiCategoryListEntity; import cn.eoe.app.entity.WikiContentItem; import cn.eoe.app.entity.WikiMoreResponse; public class WikiFragment extends BaseListFragment { List<WikiContentItem> items_list = new ArrayList<WikiContentItem>(); private Activity mActivity; private WikiCategoryListEntity loadMoreEntity; private MyAdapter mAdapter; private String more_url; private Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case 0: more_url = loadMoreEntity.getMore_url(); mAdapter.appendToList(loadMoreEntity.getItems()); break; } onLoad(); }; }; public WikiFragment(Activity c, WikiCategoryListEntity categorys) { this.mActivity = c; if (categorys != null) { this.more_url = categorys.getMore_url(); this.items_list = categorys.getItems(); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreateView(inflater, container, savedInstanceState); listview.setXListViewListener(this); // construct the RelativeLayout mAdapter = new MyAdapter(); mAdapter.appendToList(items_list); listview.setAdapter(mAdapter); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub WikiContentItem item = (WikiContentItem) mAdapter .getItem(position - 1); startDetailActivity(mActivity, item.getDetail_url(), "教程", item.getTitle()); } }); return view; } class MyAdapter extends BaseAdapter { List<WikiContentItem> mList = new ArrayList<WikiContentItem>(); public MyAdapter() { } public void appendToList(List<WikiContentItem> lists) { if (lists == null) { return; } mList.addAll(lists); notifyDataSetChanged(); } @Override public int getCount() { // TODO Auto-generated method stub return mList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return mList.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; WikiContentItem item = mList.get(position); if (convertView == null) { holder = new ViewHolder(); convertView = mInflater .inflate(R.layout.wiki_item_layout, null); holder.title_ = (TextView) convertView .findViewById(R.id.wiki_title); holder.title_.setText(item.getTitle()); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); holder.title_.setText(item.getTitle()); } return convertView; } } static class ViewHolder { public TextView title_; public TextView short_; } @Override public void onRefresh() { // TODO Auto-generated method stub onLoad(); } @Override public void onLoadMore() { if (more_url==null || more_url.equals("")) { mHandler.sendEmptyMessage(1); return; } else { new Thread() { @Override public void run() { WikiMoreResponse response = new WikiDao(mActivity) .getMore(more_url); if (response != null) { loadMoreEntity = response.getResponse(); mHandler.sendEmptyMessage(0); } } }.start(); } } }