package com.hua.goddess.fragment; import java.util.ArrayList; import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh; import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout; import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.ListView; import android.widget.TextView; import com.hua.goddess.R; import com.hua.goddess.activites.NewsTextDetail; import com.hua.goddess.base.communicate.GetNewsInterface; import com.hua.goddess.utils.LocalDisplay; import com.hua.goddess.vo.NewsListVo; import com.hua.goddess.vo.NewsVo; public class NewsListFragment extends BaseFragment implements OnRefreshListener { private NewsListVo newslist; private Handler handler = new Handler(); private ListView news_list; private NewsItemHolder newsHolder; private Context context; private ArrayList<NewsVo> list; private NewsAdapter nAdapter; private int channelId; // 新闻 = 5,社区 = 27,房产 = 23,娱乐 = 21,汽车 = 24, private int requiredPage = 1; private LinearLayout viewContainer; private View view; private PullToRefreshLayout mPullToRefreshLayout; public NewsListFragment() { } public NewsListFragment(int channelId) { this.channelId = channelId; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = getActivity(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_progress_container, null); viewContainer = (LinearLayout) rootView.findViewById(R.id.container); LocalDisplay.init(context); new GetNewsDataThread().start(); return rootView; } private void initListView() { if (context == null) return; view = LayoutInflater.from(context).inflate( R.layout.fragment_classic_header_with_list_view, null); news_list = (ListView) view.findViewById(R.id.news_list); mPullToRefreshLayout = (PullToRefreshLayout) view .findViewById(R.id.ptr_layout); ActionBarPullToRefresh.from(getActivity()).allChildrenArePullable() .listener(this).setup(mPullToRefreshLayout); nAdapter = new NewsAdapter(); news_list.setAdapter(nAdapter); viewContainer.removeAllViews(); viewContainer.addView(view); } // 获取搜索数据 class GetNewsDataThread extends Thread { @Override public void run() { try { newslist = GetNewsInterface.getNetData(channelId, requiredPage); handler.post(new Runnable() { @Override public void run() { if (newslist != null) { list = newslist.getList(); if (list != null && list.size() > 0) { initListView(); // 初始化页面 } else { initNetErro(); } } else { initNetErro(); } } }); } catch (Exception e) { e.printStackTrace(); } } } @Override public void onRefreshStarted(View view) { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { try { newslist = GetNewsInterface.getNetData(channelId, requiredPage); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); if (newslist != null) { list = newslist.getList(); if (list != null && list.size() > 0) { nAdapter.notifyDataSetChanged(); } } mPullToRefreshLayout.setRefreshComplete(); } }.execute(); } private void initNetErro() { // TODO final View loadView = LayoutInflater.from(context).inflate( R.layout.loading_view, null); loadView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); View netErroView = LayoutInflater.from(context).inflate( R.layout.page_store_net_erro, null); Button reloadBtn = (Button) netErroView.findViewById(R.id.reload_btn); netErroView.findViewById(R.id.net_erro_img).setVisibility(View.VISIBLE); reloadBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (viewContainer != null) { viewContainer.removeAllViews(); viewContainer.addView(loadView); new GetNewsDataThread().start(); } } }); if (viewContainer != null) { viewContainer.removeAllViews(); viewContainer.addView(netErroView); } } class NewsAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(context).inflate( R.layout.news_common_item, null); newsHolder = new NewsItemHolder(); newsHolder.imgNewsPic = (ImageView) convertView .findViewById(R.id.imgNewsPic); newsHolder.title = (TextView) convertView .findViewById(R.id.tvTitle); newsHolder.description = (TextView) convertView .findViewById(R.id.tvDescription); newsHolder.date_text = (TextView) convertView .findViewById(R.id.date_text); convertView.setTag(newsHolder); } else { newsHolder = (NewsItemHolder) convertView.getTag(); } imageLoader.displayImage(list.get(position).getImage().getSrc(), newsHolder.imgNewsPic, options, animateFirstListener); newsHolder.title.setText(list.get(position).getTitle()); newsHolder.date_text.setText(list.get(position).getDate()); newsHolder.description.setText(list.get(position).getContent()); convertView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), NewsTextDetail.class); Bundle bundle = new Bundle(); bundle.putString("newsId", list.get(position).getNewsId()); intent.putExtras(bundle); getActivity().startActivity(intent); getActivity().overridePendingTransition(R.anim.abc_fade_in, R.anim.abc_fade_out); } }); return convertView; } } class NewsItemHolder { ImageView imgNewsPic; TextView title; TextView date_text; TextView description; } }