package coolbuy360.searchhealth;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import coolbuy360.adapter.NewListAdapter;
import coolbuy360.control.AdvViewPager;
import coolbuy360.dbhelper.DBnewshelper;
import coolbuy360.logic.Article;
import coolbuy360.pulltorefresh.PullToRefreshBase;
import coolbuy360.pulltorefresh.PullToRefreshListView;
import coolbuy360.pulltorefresh.PullToRefreshBase.Mode;
import coolbuy360.pulltorefresh.PullToRefreshBase.OnRefreshListener2;
import coolbuy360.searchhealth.NewsSub0.GetNewsTask;
import coolbuy360.searchhealth.NewsSub0.GetNewsTask2;
import coolbuy360.searchhealth.NewsSub0.MyOnRefreshListener2;
import coolbuy360.service.CommandResult;
import coolbuy360.service.DisplayParams;
import coolbuy360.service.ImageManager;
import coolbuy360.service.Util;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.text.format.DateUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class NewsSub1 extends BaseFragment {
private static final String KEY_CONTENT = "NewsSub0:Content";
public static final int HTTP_REQUEST_SUCCESS = -1;
public static final int HTTP_REQUEST_ERROR = 0;
private List<View> advs = null;
private AdvViewPager vpAdv = null;
public View view;
public View headerView;
ViewGroup vg;
private ImageView[] imageViews = null;
private NewListAdapter sub1NewAdapter = null;
private int currentPage = 0;
private PullToRefreshListView refreshListView;
public Context mContext;
String articleType;
String parentID;
Boolean isCompleted = false;
public NewsSub1(Context context, NewListAdapter adapter) {
mContext = context;
sub1NewAdapter = adapter;
}
public NewsSub1(Context context, String articltype, String parentid) {
mContext = context;
articleType = articltype;
parentID = parentid;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
if ((savedInstanceState != null)
&& savedInstanceState.containsKey(KEY_CONTENT)) {
}
view = inflater.inflate(R.layout.basefragment_listview, null);
refreshListView = (PullToRefreshListView) view
.findViewById(R.id.ptrlvSubNews);
initPullToRefreshListView(refreshListView, sub1NewAdapter);
return view;
}
/**
* ��ʼ��PullToRefreshListView<br>
* ��ʼ����PullToRefreshListView�е�ViewPager�����
*
* @param rtflv
* @param adapter
*/
public void initPullToRefreshListView(PullToRefreshListView rtflv,
NewListAdapter adapter) {
rtflv.setMode(Mode.BOTH);
rtflv.setOnRefreshListener(new MyOnRefreshListener2(rtflv));
rtflv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View arg1,
int position, long arg3) {
// sub1NewAdapter
Map<String, String> maplist = (Map<String, String>) parent
.getItemAtPosition(position);
Log.i("newsub0",
maplist.get("ArticleID") + maplist.get("Title"));
// TODO Auto-generated method stub
startDetailActivity(getActivity(), maplist.get("ArticleID"),
maplist.get("Title"), articleType,
maplist.get("UpdateTime"));
}
});
/*
* RelativeLayout rlAdv = (RelativeLayout) LayoutInflater.from(mContext)
* .inflate(R.layout.sliding_advertisement, null); vpAdv =
* (AdvViewPager) rlAdv.findViewById(R.id.vpAdv); vg = (ViewGroup)
* rlAdv.findViewById(R.id.viewGroup);
*
* advs = new ArrayList<View>(); ImageView iv; iv = new
* ImageView(mContext); iv.setBackgroundResource(R.drawable.new_img1);
* advs.add(iv);
*
* iv = new ImageView(mContext);
* iv.setBackgroundResource(R.drawable.new_img2); advs.add(iv);
*
* iv = new ImageView(mContext);
* iv.setBackgroundResource(R.drawable.new_img3); advs.add(iv);
*
* iv = new ImageView(mContext);
* iv.setBackgroundResource(R.drawable.new_img4); advs.add(iv);
*
* vpAdv.setAdapter(new AdvAdapter());
*
* vpAdv.setOnPageChangeListener(new OnPageChangeListener() {
*
* @Override public void onPageSelected(int arg0) { currentPage = arg0;
* for (int i = 0; i < advs.size(); i++) { if (i == arg0) {
* imageViews[i] .setBackgroundResource(R.drawable.banner_dian_focus); }
* else { imageViews[i]
* .setBackgroundResource(R.drawable.banner_dian_blur); } } }
*
* @Override public void onPageScrolled(int arg0, float arg1, int arg2)
* {
*
* }
*
* @Override public void onPageScrollStateChanged(int arg0) {
*
* } });
*
* imageViews = new ImageView[advs.size()]; ImageView imageView; for
* (int i = 0; i < advs.size(); i++) { imageView = new
* ImageView(mContext); imageView.setLayoutParams(new LayoutParams(20,
* 20)); imageViews[i] = imageView; if (i == 0) { imageViews[i]
* .setBackgroundResource(R.drawable.banner_dian_focus); } else {
* imageViews[i] .setBackgroundResource(R.drawable.banner_dian_blur); }
* vg.addView(imageViews[i]); }
*
* rtflv.getRefreshableView().addHeaderView(rlAdv, null, false);
*
*
* final Handler handler = new Handler() {
*
* @Override public void handleMessage(Message msg) {
* vpAdv.setCurrentItem(msg.what); super.handleMessage(msg); }
*
*
*
*
* }; new Thread(new Runnable() {
*
* @Override public void run() { while (true) { try {
* Thread.sleep(5000); currentPage++; if(currentPage > advs.size()-1) {
* currentPage = 0; } handler.sendEmptyMessage(currentPage); } catch
* (InterruptedException e) { e.printStackTrace(); } } } }).start();
*/
/*
* AbsoluteLayout abslayout=new AbsoluteLayout (this); 05
* setContentView(abslayout); 06 //����һ��button��ť 07 Button btn1 = new
* Button(this); 08 btn1.setText(��this is a button��); 09 btn1.setId(1);
* 10 //ȷ������ؼ��Ĵ�С��λ�� 11 AbsoluteLayout.LayoutParams lp1 = 12 new
* AbsoluteLayout.LayoutParams( 13 ViewGroup.LayoutParams.WRAP_CONTENT,
* 14 ViewGroup.LayoutParams.WRAP_CONTENT, 15 0,100); 16
* abslayout.addView(btn1, lp1 );
*/
// LinearLayout linearLayout=new LinearLayout(mContext);
Log.i("newsub0", "oncreateview");
if (sub1NewAdapter != null) {
Log.i("newsub0", "sub1NewAdapter is not null oncreateview");
if(headerView!=null)
{
rtflv.getRefreshableView().addHeaderView(headerView, null, false);
}
rtflv.setAdapter(sub1NewAdapter);
} else {
List<Map<String, String>> innerList=new ArrayList<Map<String,String>>();
sub1NewAdapter=new NewListAdapter(mContext, innerList);
Log.i("newsub0", " sub1NewAdapter is null oncreateview");
}
// rtflv.setAdapter(adapter);
}
/**
* ��ȡN��ģ�����������<br>
* �����ArrayList����
*
* @return
*/
public List<Map<String, String>> getSimulationNews(int n) {
List<Map<String, String>> ret = new ArrayList<Map<String, String>>();
HashMap<String, String> hm;
for (int i = 0; i < n; i++) {
hm = new HashMap<String, String>();
if (i % 2 == 0) {
hm.put("uri",
"http://images.china.cn/attachement/jpg/site1000/20131029/001fd04cfc4813d9af0118.jpg");
} else {
hm.put("uri",
"http://photocdn.sohu.com/20131101/Img389373139.jpg");
}
hm.put("title", "���ڳ�Ʒ�ͼ����������ɶ���");
hm.put("content", "���ڳ�Ʒ�ͽ���ӭ���۴��ڣ�����Ԥ��ÿ������0.1Ԫ��");
hm.put("review", i + "����");
hm.put("id", i + "����");
ret.add(hm);
}
return ret;
}
/**
* ��������������������Ϣ����ӣ�
*
* @author brokge
*
*/
class GetNewsTask extends AsyncTask<String, Void, Integer> {
List<Map<String, String>> innerList = new ArrayList<Map<String, String>>();
CommandResult commandResult = new CommandResult(false, "��������");
int PageSize;
String Parentid;
String Articletype;
private PullToRefreshListView mPtrlv;
String Updatetime;
public GetNewsTask(PullToRefreshListView ptrlv, int pagesize,
String parentid, String articletype, String updatetime) {
this.mPtrlv = ptrlv;
PageSize = pagesize;
Parentid = parentid;
Articletype = articletype;
Updatetime = updatetime;
}
@Override
protected Integer doInBackground(String... params) {
try {
if (Util.isNetworkConnected(mContext)) {
if (!isCompleted) {
// �ȼ��ر������ݣ������������Ϊ�������Զ�����ݣ�������ɺ�д�뱾�ؿ�
DBnewshelper dBnewshelper = new DBnewshelper(mContext);
innerList = dBnewshelper.GetList(Articletype, Parentid,
PageSize, Updatetime);
if (innerList==null||innerList.size() <= 0) {
innerList = Article.getListOfColumn(Parentid, PageSize,
Updatetime);
if (innerList.size() > 0) {
// ����ӷ��������سɹ�����ʼд�����ݵ����ؿ�
dBnewshelper.Insert(innerList, Articletype,
Parentid);
commandResult.setResult(true);
commandResult.setMessage("Զ�����ݼ��سɹ�");
return HTTP_REQUEST_SUCCESS;
} else {
commandResult.setResult(false);
commandResult.setMessage("Զ������Ϊ��");
isCompleted = true;
return HTTP_REQUEST_ERROR;
}
} else {
commandResult.setResult(true);
commandResult.setMessage("���ػ������ݼ��سɹ�");
return HTTP_REQUEST_SUCCESS;
}
} else {
commandResult.setResult(false);
commandResult.setMessage("û�и�������");
return HTTP_REQUEST_ERROR;
}
}
return HTTP_REQUEST_ERROR;
} catch (Exception e) {
// TODO Auto-generated catch block
commandResult.setResult(false);
commandResult.setMessage("�쳣����");
return HTTP_REQUEST_ERROR;
}
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
switch (result) {
case HTTP_REQUEST_SUCCESS:
sub1NewAdapter.addNews(innerList);
sub1NewAdapter.notifyDataSetChanged();
break;
case HTTP_REQUEST_ERROR:
if (Util.isNetworkConnected(mContext)&&isCompleted) {
mPtrlv.getLoadingLayoutProxy().setPullLabel(
commandResult.getMessage());
} else {
Toast.makeText(getActivity(), commandResult.getMessage(),
Toast.LENGTH_SHORT).show();
}
break;
}
mPtrlv.onRefreshComplete();
}
}
class MyOnRefreshListener2 implements OnRefreshListener2<ListView> {
private PullToRefreshListView mPtflv;
public MyOnRefreshListener2(PullToRefreshListView ptflv) {
this.mPtflv = ptflv;
}
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
// ����ˢ��
String label = DateUtils.formatDateTime(getActivity(),
System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_SHOW_DATE
| DateUtils.FORMAT_ABBREV_ALL);
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
new GetNewsTask2(mPtflv, News.PageSize, parentID, articleType)
.execute();
//ˢ�����ݺ�״̬��ԭ
isCompleted=false;
refreshView.getLoadingLayoutProxy().setPullLabel("������ˢ��");
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
// ��������
// ������������
String updatetime = "2099-01-01 11:56:43.157";
Map<String, String> bottomMap;
int count = sub1NewAdapter.getCount();
if(count>0)
{
bottomMap = (Map<String, String>) sub1NewAdapter
.getItem(count - 1);
updatetime = bottomMap.get("UpdateTime");
}
Log.i("newsub0", count + "�����ݼ��� ����updatetime=" + updatetime);
new GetNewsTask(mPtflv, News.PageSize, parentID, articleType,
updatetime).execute();
}
}
/**
* ��������������������Ϣ��ˢ�£�
*
* @author brokge
*/
class GetNewsTask2 extends AsyncTask<String, Void, Integer> {
List<Map<String, String>> innerList = new ArrayList<Map<String, String>>();
CommandResult commandResult = new CommandResult(false, "��������");
int PageSize;
String Parentid;
String Articletype;
private PullToRefreshListView mPtrlv;
public GetNewsTask2(PullToRefreshListView ptrlv, int pagesize,
String parentid, String articletype) {
this.mPtrlv = ptrlv;
PageSize = pagesize;
Parentid = parentid;
Articletype = articletype;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected Integer doInBackground(String... params) {
try {
if (Util.isNetworkConnected(mContext)) {
// �����������ݣ�����ӵ����ؿ���,����ɾ�����ؿ���������
innerList = Article.getListOfColumn(Parentid, PageSize, "");
if (innerList!=null&&innerList.size() > 0) {
DBnewshelper dBnewshelper = new DBnewshelper(mContext);
dBnewshelper.Delete("ArticleType='" + Articletype
+ "' and ParentID=" + Parentid);
dBnewshelper.Insert(innerList, Articletype, Parentid);
commandResult.setResult(true);
commandResult.setMessage("Զ�����ݼ��سɹ�");
return HTTP_REQUEST_SUCCESS;
} else {
commandResult.setResult(false);
commandResult.setMessage("Զ�����ݼ���Ϊ��");
return HTTP_REQUEST_ERROR;
}
}
else {
commandResult.setResult(false);
commandResult.setMessage("������������");
return HTTP_REQUEST_ERROR;
}
} catch (Exception e) {
commandResult.setResult(false);
commandResult.setMessage("�쳣����");
return HTTP_REQUEST_ERROR;
}
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
switch (result) {
case HTTP_REQUEST_SUCCESS:
Map<String, String> headerMap = innerList.get(0);
if (headerMap.get("BigImage") != null
&& !headerMap.get("BigImage").equals("")) {
innerList.remove(0);
/*
* FrameLayout frameLayout = (FrameLayout) LayoutInflater
* .from(mContext).inflate( R.layout.news_frame_headertitle,
* null); ImageView imageView = (ImageView) frameLayout
* .findViewById(R.id.news_headerImage); int width =
* DisplayParams.getInstance(mContext).screenWidth;
* ViewGroup.LayoutParams lps = imageView.getLayoutParams();
* lps.height = width / 2; lps.width = width;
* imageView.setLayoutParams(lps); String imgurl =
* headerMap.get("BigImage"); String imagePath =
* Util.getDissertationImgPath(); if
* (imgurl.toLowerCase().startsWith("http://")) {
* ImageManager.from(mContext).displayImage(imageView,
* imgurl, R.drawable.promotion_def_pic, width, width / 2);
* } else { // ����ͼƬ��·��
* ImageManager.from(mContext).displayImage(imageView,
* imagePath + imgurl, R.drawable.promotion_def_pic, width,
* width / 2); } TextView titleView = (TextView) frameLayout
* .findViewById(R.id.news_headerTitle);
* titleView.setText(headerMap.get("Title")); TextView
* typeView = (TextView) frameLayout
* .findViewById(R.id.news_headerType);
* typeView.setText("�ö���Ѷ"); final String ArticleID =
* headerMap.get("ArticleID") .toString(); final String
* updatetimeString = headerMap.get("UpdateTime")
* .toString(); imageView.setOnClickListener(new
* OnClickListener() {
*
* @Override public void onClick(View v) { Log.i("newsub0",
* v.getTag().toString());
* startDetailActivity(getActivity(), ArticleID,
* "��������ͷ����ʧ��", articleType, updatetimeString); } });
*/
UPrefreshLoadData2(headerMap, innerList);
} else {
UPrefreshLoadData2(null, innerList);
}
News inews = News.getInstance();
if (inews!=null) {
inews.setNewNotice(parentID, View.GONE);
}
break;
case HTTP_REQUEST_ERROR:
Toast.makeText(mContext, commandResult.getMessage(),
Toast.LENGTH_SHORT).show();
break;
}
mPtrlv.onRefreshComplete();
}
}
class AdvAdapter extends PagerAdapter {
@Override
public int getCount() {
return advs.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView(advs.get(position));
}
@Override
public Object instantiateItem(View container, final int position) {
((ViewPager) container).addView(advs.get(position));
/*
* advs.get(position).setOnClickListener(new OnClickListener() {
*
* @Override public void onClick(View v) { // TODO Auto-generated
* method stub switch (position) { case 0:
* Toast.makeText(getBaseContext(), "���������ͼƬ"+position+1, 1).show();
* break; case 1: Toast.makeText(getBaseContext(),
* "���������ͼƬ"+position+1, 1).show(); break; default:
* Toast.makeText(getBaseContext(), "���������ͼƬ"+position+1, 1).show();
* break; } } });
*/
return advs.get(position);
}
}
/**
* (non-Javadoc)
*
* @see
* android.support.v4.app.Fragment#onSaveInstanceState(android.os.Bundle)
*/
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
Log.i("newsub0", " onSaveInstanceState");
}
public void reLoadDataNoticeChange(List<Map<String, String>> ListData) {
sub1NewAdapter.addNews(ListData);
sub1NewAdapter.notifyDataSetChanged();
}
public void addHeaderView(Map<String, String> headerMap,
NewListAdapter adapter) {
headerView = CreateHeaderView(headerMap);
refreshListView.getRefreshableView().addHeaderView(headerView, null,
false);
sub1NewAdapter = adapter;
refreshListView.setAdapter(sub1NewAdapter);
}
public void OnlySetAdapter(NewListAdapter adapter) {
sub1NewAdapter = adapter;
refreshListView.setAdapter(sub1NewAdapter);
}
public void UPrefreshLoadData(View view, List<Map<String, String>> list) {
refreshListView.getRefreshableView().removeHeaderView(headerView);
if (view != null) {
headerView = view;
refreshListView.getRefreshableView().addHeaderView(view, null,
false);
}
sub1NewAdapter.clearList();
sub1NewAdapter.addNews(list);
sub1NewAdapter.notifyDataSetChanged();
}
public void UPrefreshLoadData2(Map<String, String> headerMap,
List<Map<String, String>> list) {
if(headerMap!=null)
{
/*headerView.setVisibility(View.VISIBLE);
headerView.findViewById(R.id.news_headerImage).setVisibility(View.VISIBLE);
headerView.findViewById(R.id.news_header_line_title).setVisibility(View.VISIBLE);*/
UpdateHeaderView(headerView,headerMap,list);
}
else {
if(headerView!=null)
{
headerView.setVisibility(View.GONE);
headerView.findViewById(R.id.news_headerImage).setVisibility(View.GONE);
headerView.findViewById(R.id.news_header_line_title).setVisibility(View.GONE);
}
}
sub1NewAdapter.clearList();
sub1NewAdapter.addNews(list);
sub1NewAdapter.notifyDataSetChanged();
}
private void UpdateHeaderView(View headView, Map<String, String> headerMap,List<Map<String, String>> innerList) {
if(headView!=null)
{
ImageView imageView = (ImageView) headView
.findViewById(R.id.news_headerImage);
int width = DisplayParams.getInstance(mContext).screenWidth;
ViewGroup.LayoutParams lps = imageView.getLayoutParams();
lps.height = width / 2;
lps.width = width;
imageView.setLayoutParams(lps);
String imgurl = headerMap.get("BigImage");
String imagePath = Util.getNewsImgPath();
/* if (imgurl.toLowerCase().startsWith("http://")) {
ImageManager.from(mContext).displayImage(imageView, imgurl,
R.drawable.promotion_def_pic, width, width / 2);
} else {
ImageManager.from(mContext).displayImage(imageView,
imagePath + imgurl, R.drawable.promotion_def_pic, width,
width / 2);
}*/
if (imgurl.toLowerCase().startsWith("http://")||imgurl.equals("")) {
} else {
imgurl=imagePath + imgurl;
}
BaseLoadImage(mContext,imgurl,imageView);
TextView titleView = (TextView) headView
.findViewById(R.id.news_headerTitle);
titleView.setText(headerMap.get("Title"));
TextView typeView = (TextView) headView
.findViewById(R.id.news_headerType);
typeView.setText(R.string.news_header_title_top);
final String ArticleID = headerMap.get("ArticleID").toString();
final String updatetimeString = headerMap.get("UpdateTime").toString();
final String Title=headerMap.get("Title").toString();
headView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startDetailActivity(getActivity(), ArticleID, Title,
News.articleType.toString(), updatetimeString);
}
});
}
else {
NewListAdapter subNewAdapter=new NewListAdapter(mContext, innerList);
addHeaderView(headerMap, subNewAdapter);
}
}
public View CreateHeaderView(Map<String, String> headerMap) {
FrameLayout frameLayout = (FrameLayout) LayoutInflater.from(mContext)
.inflate(R.layout.news_frame_headertitle, null);
ImageView imageView = (ImageView) frameLayout
.findViewById(R.id.news_headerImage);
int width = DisplayParams.getInstance(mContext).screenWidth;
ViewGroup.LayoutParams lps = imageView.getLayoutParams();
lps.height = width / 2;
lps.width = width;
imageView.setLayoutParams(lps);
String imgurl = headerMap.get("BigImage");
String imagePath = Util.getNewsImgPath();
/* if (imgurl.toLowerCase().startsWith("http://")) {
ImageManager.from(mContext).displayImage(imageView, imgurl,
R.drawable.promotion_def_pic, width, width / 2);
} else {
// ����ͼƬ��·��
ImageManager.from(mContext).displayImage(imageView,
imagePath + imgurl, R.drawable.promotion_def_pic, width,
width / 2);
}*/
if (imgurl.toLowerCase().startsWith("http://")||imgurl.equals("")) {
} else {
imgurl=imagePath + imgurl;
}
BaseLoadImage(mContext,imgurl,imageView);
TextView titleView = (TextView) frameLayout
.findViewById(R.id.news_headerTitle);
titleView.setText(headerMap.get("Title"));
TextView typeView = (TextView) frameLayout
.findViewById(R.id.news_headerType);
typeView.setText(R.string.news_header_title_top);
final String ArticleID = headerMap.get("ArticleID").toString();
final String updatetimeString = headerMap.get("UpdateTime").toString();
final String Title = headerMap.get("Title").toString();
frameLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startDetailActivity(getActivity(), ArticleID, Title,
News.articleType.toString(), updatetimeString);
}
});
return frameLayout;
}
}