package com.brady.jlulife.Fragments.News;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import com.brady.jlulife.Adapters.NewsAdapter;
import com.brady.jlulife.Fragments.BaseFragment;
import com.brady.jlulife.R;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import java.util.ArrayList;
import java.util.List;
/**
* A placeholder fragment containing a simple view.
*/
public abstract class NewsListFragment extends BaseFragment {
protected PullToRefreshListView refreshListView;
Fragment fragment = null;
NewsAdapter mAdapter = null;
List mList = null;
int mPageNum = 1;
TextView mTextView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mPageNum = 1;
fragment = this;
return inflater.inflate(R.layout.fragment_news_list, container, false);
}
@Override
public void onViewCreated(final View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initRefeshView(view);
if(mList.size()==0) {
showDialog();
LoadInfo();
}
mTextView = (TextView) view.findViewById(R.id.label_loading);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
private void initRefeshView(View view){
refreshListView = (PullToRefreshListView) view.findViewById(R.id.news_listview);
mList = new ArrayList();
mAdapter = new NewsAdapter(getActivity(), R.layout.item_news, mList);
refreshListView.setAdapter(mAdapter);
refreshListView.setMode(PullToRefreshBase.Mode.BOTH);
refreshListView.getLoadingLayoutProxy(false,true).setPullLabel(getString(R.string.pull_to_load));
refreshListView.getLoadingLayoutProxy(false,true).setRefreshingLabel(getString(R.string.loading));
refreshListView.getLoadingLayoutProxy(false,true).setReleaseLabel(getString(R.string.release_to_load));
refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
String label = DateUtils.formatDateTime(getView().getContext().getApplicationContext(), System.currentTimeMillis(),
DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
if (refreshListView.isHeaderShown()) {
mPageNum = 1;
LoadInfo();
} else {
mPageNum++;
LoadInfo();
}
}
});
}
protected abstract void LoadInfo();
protected void showNewsList(List list){
mTextView.setVisibility(View.GONE);
if (mPageNum == 1) {
mList = list;
mAdapter.setNewsList(list);
} else {
mList.addAll(list);
}
mAdapter.notifyDataSetChanged();
refreshListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
processItemClick(position);
}
});
refreshListView.onRefreshComplete();
}
public abstract void processItemClick(int position);
public void replaceFrag(Fragment fragment,Bundle bundle){
fragment.setArguments(bundle);
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.hide(this);
transaction.add(R.id.main_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
}