package cn.eoe.app.view;
import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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.ImageView;
import android.widget.TextView;
import cn.eoe.app.R;
import cn.eoe.app.biz.NewsDao;
import cn.eoe.app.entity.NewsCategoryListEntity;
import cn.eoe.app.entity.NewsContentItem;
import cn.eoe.app.entity.NewsMoreResponse;
import cn.eoe.app.utils.ImageUtil;
@SuppressLint("NewApi")
public class NewsFragment extends BaseListFragment {
public Activity mActivity;
private List<NewsContentItem> items_list = new ArrayList<NewsContentItem>();
private String more_url;
private MyAdapter mAdapter;
private NewsCategoryListEntity loadMoreEntity;
// private DisplayImageOptions options;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case 0:
more_url = loadMoreEntity.getMore_url();
mAdapter.appendToList(loadMoreEntity.getItems());
break;
}
onLoad();
}
};
// add this constructor by King0769, 2013/5/7
// in order to solve an exception that "can't instantiate class cn.eoe.app.view.NewsFragment; no empty constructor"
// I found it in this case : 1.open eoe program -> 2.change system language -> 3.reopen eoe, can see FC(force close)
// I think this bug will happens in many cases.
public NewsFragment() {
}
//--------------------
public NewsFragment(Activity c, NewsCategoryListEntity categorys) {
this.mActivity = c;
if (categorys != null) {
this.items_list = categorys.getItems();
more_url = categorys.getMore_url();
}
}
@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
NewsContentItem item = (NewsContentItem) mAdapter
.getItem(position - 1);
startDetailActivity(mActivity, item.getDetail_url(), "资讯",
item.getTitle());
}
});
return view;
}
class MyAdapter extends BaseAdapter {
List<NewsContentItem> mList = new ArrayList<NewsContentItem>();
public MyAdapter() {
}
public void appendToList(List<NewsContentItem> 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;
NewsContentItem item = mList.get(position);
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater
.inflate(R.layout.news_item_layout, null);
holder.title_ = (TextView) convertView
.findViewById(R.id.news_title);
holder.short_ = (TextView) convertView
.findViewById(R.id.news_short_content);
holder.img_thu = (ImageView) convertView
.findViewById(R.id.img_thu);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.title_.setText(item.getTitle());
holder.short_.setText(item.getShort_content());
String img_url = item.getThumbnail_url();
if (img_url.equals(null) || img_url.equals("")) {
holder.img_thu.setVisibility(View.GONE);
} else {
holder.img_thu.setVisibility(View.VISIBLE);
ImageUtil.setThumbnailView(img_url, holder.img_thu, mActivity,
callback1, false);
}
return convertView;
}
}
static class ViewHolder {
public TextView title_;
public TextView short_;
public ImageView img_thu;
}
@Override
public void onRefresh() {
// TODO Auto-generated method stub
onLoad();
}
@Override
public void onLoadMore() {
// TODO Auto-generated method stub
if (more_url==null || more_url.equals("")) {
mHandler.sendEmptyMessage(1);
return;
} else {
new Thread() {
@Override
public void run() {
NewsMoreResponse response = new NewsDao(mActivity)
.getMore(more_url);
if (response != null) {
loadMoreEntity = response.getResponse();
mHandler.sendEmptyMessage(0);
}
super.run();
}
}.start();
}
}
}