/**
* FirstPageFregment.java[v 1.0.0]
* class:com.mydream.fragment.freg,FirstPageFregment
* 周航 create at 2016-3-22 下午7:40:18
*/
package com.bdyjy.fragment;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.annotation.SuppressLint;
import android.app.Fragment;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.bdyjy.R;
import com.bdyjy.activity.MainActivity;
import com.bdyjy.adapter.ListViewAdapter;
import com.bdyjy.adapter.NanyanNewsListViewAdapter;
import com.bdyjy.constants.HandlerOrder;
import com.bdyjy.custom.view.XListView;
import com.bdyjy.custom.view.XListView.IXListViewListener;
import com.bdyjy.entity.News;
import com.bdyjy.entity.NewsContentQueryResultBean;
import com.bdyjy.entity.NewsQueryResultBean;
import com.bdyjy.entity.news.NewsDetail;
import com.bdyjy.entity.news.NewsDetailRes;
import com.bdyjy.entity.news.NewsItem;
import com.bdyjy.entity.news.NewsList;
import com.bdyjy.util.OkHttpUtils;
import com.bdyjy.util.SPUtils;
/**
* ��ҳfregment
*
* @author �ܺ�<br/>
* create at 2016-3-22 ����7:40:18
*/
@SuppressLint("NewApi")
public class NewsListFragment extends Fragment implements IXListViewListener
{
Handler handler = null;
String toastMsg = null;
private void initHandler()
{
handler = new Handler(ctx.getMainLooper())
{
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case HandlerOrder.TOAST:
// TODO
Toast.makeText(ctx, toastMsg, Toast.LENGTH_LONG).show();
break;
case HandlerOrder.UPDATE_LISTVIEW:
listView1.onLoad();
loadData();
break;
case HandlerOrder.PROCESSBAR_SHOW:
ctx.showRoundProcessDialog();
break;
case HandlerOrder.PROCESSBAR_HIDE:
ctx.hideRoundProcessDialog();
break;
}
}
};
}
private MainActivity ctx;
// �Զ��������б����
// private ListView listView1;
private XListView listView1;
private ListViewAdapter listViewAdapter;
private List<Map<String, Object>> listItems;
private static int type = 1;// ��ǰ�������ֵ
private int pageSize = 5;// ҳ����������-����
private int sizeStep = 5;// ÿ�μ��ص���Ŀ
private NanyanNewsListViewAdapter nanyan_listViewAdapter;// ����Ҫ��adapter
private static List<NewsItem> nanyanNewsList;// ����Ҫ���ر�list
// 3�����͵������б���л�
private LinearLayout ll_news_type1, ll_news_type2, ll_news_type3;
public NewsListFragment(MainActivity ctx)
{
this.ctx = ctx;
initHandler();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.newslist_fragment, null);
view.findViewById(R.id.ll_back).setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v)
{
ctx.jumpToFirstPageFregment();
}
});
listView1 = (XListView) view.findViewById(R.id.newslist1);
listView1.setPullLoadEnable(true);
listView1.setXListViewListener(this);
listItems = new ArrayList<Map<String, Object>>();
// ѡ��ĵ���¼�
listView1.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
// ����ѡ��ĵ���¼�
TextView tv = (TextView) view.findViewById(R.id.tv_news_id);
String sid = tv.getText().toString();
// �����������id������ѯ������������ݣ���ʾ����
// ��ѯ��̨
if (type == 1)
{
System.out.println("���ڲ�ѯ����Ҫ�ŵ�����");
getNanyanNewsContent(sid);
} else
{
getNewsContent(sid);
}
}
});
initTab(view);
// TODO �Ǿ�
if (type == 1)
{
if (null == nanyanNewsList)
getNanyanNews();
else
handler.sendEmptyMessage(HandlerOrder.UPDATE_LISTVIEW);
} else
{
if (null == MainActivity.newsList)
{
ll_news_type2.performClick();
} else
{
// ���ı���ͼ
ll_news_type2.setBackground(getResources().getDrawable(
R.drawable.selected_item_bg));
ll_news_type1.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg));
ll_news_type3.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg));
handler.sendEmptyMessage(HandlerOrder.UPDATE_LISTVIEW);
}
}
loadData();
return view;
}
/**
* ��ʼ��ѡ�
*
* @param view
*/
private void initTab(View view)
{
// ���������л�
ll_news_type1 = (LinearLayout) view.findViewById(R.id.ll_news_type1);
ll_news_type2 = (LinearLayout) view.findViewById(R.id.ll_news_type2);
ll_news_type3 = (LinearLayout) view.findViewById(R.id.ll_news_type3);
// ÿ���л��������ʺ�̨��Ȼ����ص��б���
ll_news_type1.setOnClickListener(new OnClickListener()
{
@SuppressLint("NewApi")
@Override
public void onClick(View v)
{
// ���ҽ���ǰѡ�е�������Ӵֱ�ɫ�������Ļع�ԭstyle
ll_news_type1.setBackground(getResources().getDrawable(
R.drawable.selected_item_bg));
ll_news_type2.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg));
ll_news_type3.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg));
pageSize = 5;
type = 1;
// getNewsList(type);
getNanyanNews();// ��������Ҫ���ر�
}
});
ll_news_type2.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// ���ҽ���ǰѡ�е�������Ӵֱ�ɫ�������Ļع�ԭstyle
ll_news_type2.setBackground(getResources().getDrawable(
R.drawable.selected_item_bg));
ll_news_type1.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg));
ll_news_type3.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg));
pageSize = 5;
type = 2;
getNewsList(type);
// loadData();
}
});
ll_news_type3.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// ���ҽ���ǰѡ�е�������Ӵֱ�ɫ�������Ļع�ԭstyle
ll_news_type3.setBackground(getResources().getDrawable(
R.drawable.selected_item_bg));
ll_news_type2.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg));
ll_news_type1.setBackground(getResources().getDrawable(
R.drawable.not_selected_item_bg));
pageSize = 5;
type = 3;
getNewsList(type);
// loadData();
}
});
}
private static final String[] URLS =
{
"http://h.hiphotos.baidu.com/image/pic/item/faedab64034f78f0b00507c97e310a55b3191cf9.jpg",
"http://www.pkusz.edu.cn/uploadfile/2016/0427/20160427091614202.jpg",
"http://imgsrc.baidu.com/forum/w%3D580/sign=fcae01763b87e9504217f3642039531b/2f2eb9389b504fc29fccbeb0e4dde71191ef6df7.jpg",
"http://f.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=496abfc08db1cb133e3c3415ed647a76/b7003af33a87e95048e8274310385343fbf2b426.jpg",
"http://d.hiphotos.baidu.com/zhidao/wh%3D450%2C600/sign=603e37439313b07ebde8580c39e7bd15/a8014c086e061d9591b7875a7bf40ad163d9cadb.jpg", };
private void loadData()
{
// ���ԭ������
listItems.clear();
Map<String, Object> map = null;
if (type == 1)// ���type��1����˵��������Ҫ�ţ���������Ҫ�ŵ��ر�
{
if (null != nanyanNewsList)
{
for (int i = 0; i < nanyanNewsList.size(); i++)
{
map = new HashMap<String, Object>();
String thumb = nanyanNewsList.get(i).getThumb();
// http://img0.imgtn.bdimg.com/it/u=1619454554,2969607734&fm=21&gp=0.jpg
// if(TextUtils.isEmpty(thumb)){
// thumb =
// "http://img0.imgtn.bdimg.com/it/u=1619454554,2969607734&fm=21&gp=0.jpg";
// }
map.put("thumb", thumb); //
// ������ʹ�ò���ͼƬ������д����
// String thumb = "";
// if (i >= 5)
// thumb = URLS[i % 5];
// else
// thumb = URLS[i];
// map.put("thumb", thumb);
map.put("title", nanyanNewsList.get(i).getTitle()); // ��Ʒ����
map.put("news_id", nanyanNewsList.get(i).getId());
map.put("sourcefrom", nanyanNewsList.get(i).getSourcefrom());
map.put("date", nanyanNewsList.get(i).getDate());
listItems.add(map);
}
}
// if (null == nanyan_listViewAdapter)
// {
nanyan_listViewAdapter = new NanyanNewsListViewAdapter(ctx,
listItems, listView1); // ����������
listView1.setAdapter(nanyan_listViewAdapter);
// } else
// {
// nanyan_listViewAdapter.refresh(listItems);
// }
} else
{
if (null != MainActivity.newsList)
{
for (int i = 0; i < MainActivity.newsList.size(); i++)
{
System.out.println("bbbb:" + MainActivity.newsList.get(i));
map = new HashMap<String, Object>();
map.put("image", MainActivity.newsList.get(i).getLogo()); // ͼƬ��Դ,
// ��ʱ��ʹ��ͬһ��ͼƬ��Ϊ����
map.put("date", MainActivity.newsList.get(i)
.getCreateTime()); //
map.put("title", MainActivity.newsList.get(i).getTitle()); // ��Ʒ����
map.put("news_id", MainActivity.newsList.get(i).getId());
map.put("pubFrom", MainActivity.newsList.get(i)
.getPubFrom());
listItems.add(map);
}
}
// if (null == listViewAdapter)
// {
listViewAdapter = new ListViewAdapter(ctx, listItems); // ����������
listView1.setAdapter(listViewAdapter);
// } else
// {
// listViewAdapter.refresh(listItems);
// }
}
}
// �������װ�Ӻ�̨һ����ȡ�����б�ķ���
private void getNewsList(final int type)
{
new Thread()
{
@Override
public void run()
{
// ����get����
String res = null;
// ��sharePreference��ȡ��֮ǰ�洢�IJ���
String token = (String) SPUtils.get(ctx, "token", "");
String singnature = (String) SPUtils.get(ctx, "singnature", "");
String st = (String) SPUtils.get(ctx, "st", "");
try
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW);
res = OkHttpUtils.getInstance().doGet(
ctx,
"/admin/news/app/grid.do?pageNo=1&pageSize="
+ pageSize + "&type=" + type + "&token="
+ token + "&singnature=" + singnature
+ "&st=" + st);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
} catch (Exception e)
{
e.printStackTrace();
toastMsg = "��ȡ��������ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
return;
}
System.out.println("�������ţ����صĽ���ǣ�" + res.trim());
// ���Խ�json��ת����bean����
NewsQueryResultBean nqrb = JSON.parseObject(res,
NewsQueryResultBean.class);
// System.out.println("xxxx:" + nqrb.getApp_result_key());
// ����ֵ������JSON��ʽ�����ݣ���Ҫ���������
if (res.trim().length() == 0)
{
toastMsg = "��ȡ��������ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
return;
}
String app_result_key = nqrb.getApp_result_key();
if ("0".equals(app_result_key))
{
// ��������˵���������������ݣ���Ҫ�������ȡ���ŵı���
List<News> list = nqrb.getData().getRows();
for (News n : list)
{
System.out.println(n.getTitle());
}
// ����Щ���Ŷ���洢��sp��
MainActivity.newsList = list;
// ʹ��handlerȥ֪ͨ���̸߳���listview
handler.sendEmptyMessage(HandlerOrder.UPDATE_LISTVIEW);
}
}
}.start();
}
// �������װ�Ӻ�̨һ����ȡ�������ݵķ���
private void getNewsContent(final String id)
{
new Thread()
{
@Override
public void run()
{
// ����get����
String res = null;
// ��sharePreference��ȡ��֮ǰ�洢�IJ���
String token = (String) SPUtils.get(ctx, "token", "");
String singnature = (String) SPUtils.get(ctx, "singnature", "");
String st = (String) SPUtils.get(ctx, "st", "");
try
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW);
res = OkHttpUtils.getInstance().doGet(
ctx,
"/admin//news/app/initView.do?id=" + id + "&token="
+ token + "&singnature=" + singnature
+ "&st=" + st);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
} catch (Exception e)
{
e.printStackTrace();
}
System.out.println("��������res��" + res);
NewsContentQueryResultBean bean = JSON.parseObject(res,
NewsContentQueryResultBean.class);
// System.out.println("xxxx:" + bean.getApp_result_key());
// ����ֵ������JSON��ʽ�����ݣ���Ҫ���������
if (res.trim().length() == 0)
{
toastMsg = "��ȡ��������ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
return;
}
String app_result_key = bean.getApp_result_key();
if ("0".equals(app_result_key))// ���������������ŵ�����,
// ��ô��Ҫ������ȡ�����ŵı��⣬���ݣ���ʾ�ڽ�����
{
News b = bean.getEntity();
MainActivity.news = b;
MainActivity.newsDetail = null;
}
ctx.jumpToNewsContentFregment();
}
}.start();
}
/**
* ��ȡ������Ҫ�š���tab1��ʹ���ر�
*/
private void getNanyanNews()
{
new Thread()
{
@Override
public void run()
{
String res = null;
try
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW);
res = OkHttpUtils.getInstance().Get(
"http://www.pkusz.edu.cn/api/get_news.php?pageSize="
+ pageSize);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
} catch (Exception e)
{
e.printStackTrace();
toastMsg = "��ȡ��������ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
return;
}
System.out.println("�������ţ����صĽ���ǣ�" + res.trim());
// ���Խ�json��ת����bean����
NewsList nl = JSON.parseObject(res, NewsList.class);
// ����ֵ������JSON��ʽ�����ݣ���Ҫ���������
if (res.trim().length() == 0)
{
toastMsg = "��ȡ��������ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
return;
}
String code = nl.getCode();
if ("OK".equals(code))
{
// ��������˵���������������ݣ���Ҫ�������ȡ���ŵı���
nanyanNewsList = nl.getList();
for (NewsItem n : nanyanNewsList)
{
System.out.println("����Ҫ�ű��⣺" + n.getThumb());
}
// // ����Щ���Ŷ���洢��sp��
// MainActivity.newsList = list;
// ʹ��handlerȥ֪ͨ���̸߳���listview
handler.sendEmptyMessage(HandlerOrder.UPDATE_LISTVIEW);
}
}
}.start();
}
// �������װ�Ӻ�̨һ����ȡ�������ݵķ���
private void getNanyanNewsContent(final String id)
{
new Thread()
{
@Override
public void run()
{
// ����get����
String res = null;
try
{
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_SHOW);
res = OkHttpUtils.getInstance()
.Get("http://www.pkusz.edu.cn/api/get_news.php?id="
+ id);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
} catch (Exception e)
{
e.printStackTrace();
}
System.out.println("��������res��" + res);
NewsDetailRes bean = JSON.parseObject(res, NewsDetailRes.class);
// ����ֵ������JSON��ʽ�����ݣ���Ҫ���������
if (res.trim().length() == 0)
{
toastMsg = "��ȡ��������ʧ��";
handler.sendEmptyMessage(HandlerOrder.TOAST);
handler.sendEmptyMessage(HandlerOrder.PROCESSBAR_HIDE);
return;
}
String app_result_key = bean.getCode();
if ("OK".equals(app_result_key))// ���������������ŵ�����,
// ��ô��Ҫ������ȡ�����ŵı��⣬���ݣ���ʾ�ڽ�����
{
NewsDetail b = bean.getDetail();
MainActivity.news = null;
MainActivity.newsDetail = b;
}
ctx.jumpToNewsContentFregment();
}
}.start();
}
/**
* �������������أ�����ˢ����ش���
*/
@Override
public void onRefresh()// ����ˢ��
{
// toastMsg = "������ˢ�¶���";
// handler.sendEmptyMessage(HandlerOrder.TOAST);
pageSize = 5;
// ˢ������
if (type == 1)
{
getNanyanNews();
} else
{
getNewsList(type);
}
}
@Override
public void onLoadMore()// ���Ǽ��ظ���
{
// toastMsg = "���������ض���";
// handler.sendEmptyMessage(HandlerOrder.TOAST);
pageSize += sizeStep;
if (type == 1)
{
getNanyanNews();
} else
{
getNewsList(type);
}
}
}