package com.topnews.fragment;
import java.util.ArrayList;
import org.w3c.dom.Text;
import com.topnews.CityListActivity;
import com.topnews.DetailsActivity;
import com.topnews.R;
import com.topnews.adapter.NewsAdapter;
import com.topnews.bean.NewsEntity;
import com.topnews.tool.Constants;
import com.topnews.view.HeadListView;
import com.topnews.view.TopToastView;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.util.Log;
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.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class NewsFragment extends Fragment {
private final static String TAG = "NewsFragment";
Activity activity;
ArrayList<NewsEntity> newsList = new ArrayList<NewsEntity>();
HeadListView mListView;
NewsAdapter mAdapter;
String text;
int channel_id;
ImageView detail_loading;
public final static int SET_NEWSLIST = 0;
//Toast提示框
private RelativeLayout notify_view;
private TextView notify_view_text;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
Bundle args = getArguments();
text = args != null ? args.getString("text") : "";
channel_id = args != null ? args.getInt("id", 0) : 0;
initData();
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
this.activity = activity;
super.onAttach(activity);
}
/** 此方法意思为fragment是否可见 ,可见时候加载数据 */
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser) {
//fragment可见时加载数据
if(newsList !=null && newsList.size() !=0){
handler.obtainMessage(SET_NEWSLIST).sendToTarget();
}else{
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.obtainMessage(SET_NEWSLIST).sendToTarget();
}
}).start();
}
}else{
//fragment不可见时不执行操作
}
super.setUserVisibleHint(isVisibleToUser);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = LayoutInflater.from(getActivity()).inflate(R.layout.news_fragment, null);
mListView = (HeadListView) view.findViewById(R.id.mListView);
TextView item_textview = (TextView)view.findViewById(R.id.item_textview);
detail_loading = (ImageView)view.findViewById(R.id.detail_loading);
//Toast提示框
notify_view = (RelativeLayout)view.findViewById(R.id.notify_view);
notify_view_text = (TextView)view.findViewById(R.id.notify_view_text);
item_textview.setText(text);
return view;
}
private void initData() {
newsList = Constants.getNewsList();
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.what) {
case SET_NEWSLIST:
detail_loading.setVisibility(View.GONE);
if(mAdapter == null){
mAdapter = new NewsAdapter(activity, newsList);
//判断是不是城市的频道
if(channel_id == Constants.CHANNEL_CITY){
//是城市频道
mAdapter.setCityChannel(true);
initCityChannel();
}
}
mListView.setAdapter(mAdapter);
mListView.setOnScrollListener(mAdapter);
mListView.setPinnedHeaderView(LayoutInflater.from(activity).inflate(R.layout.list_item_section, mListView, false));
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = new Intent(activity, DetailsActivity.class);
if(channel_id == Constants.CHANNEL_CITY){
if(position != 0){
intent.putExtra("news", mAdapter.getItem(position - 1));
startActivity(intent);
activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
}
}else{
intent.putExtra("news", mAdapter.getItem(position));
startActivity(intent);
activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
}
}
});
if(channel_id == 1){
initNotify();
}
break;
default:
break;
}
super.handleMessage(msg);
}
};
/* 初始化选择城市的header*/
public void initCityChannel() {
View headview = LayoutInflater.from(activity).inflate(R.layout.city_category_list_tip, null);
TextView chose_city_tip = (TextView) headview.findViewById(R.id.chose_city_tip);
chose_city_tip.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(activity, CityListActivity.class);
startActivity(intent);
}
});
mListView.addHeaderView(headview);
}
/* 初始化通知栏目*/
private void initNotify() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
notify_view_text.setText(String.format(getString(R.string.ss_pattern_update), 10));
notify_view.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
notify_view.setVisibility(View.GONE);
}
}, 2000);
}
}, 1000);
}
/* 摧毁视图 */
@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
Log.d("onDestroyView", "channel_id = " + channel_id);
mAdapter = null;
}
/* 摧毁该Fragment,一般是FragmentActivity 被摧毁的时候伴随着摧毁 */
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.d(TAG, "channel_id = " + channel_id);
}
}