package info.jiangpeng.fragment; import android.app.ListFragment; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import info.jiangpeng.DataChangeListener; import info.jiangpeng.R; import info.jiangpeng.activity.BookDetailsActivity; import info.jiangpeng.adapter.BookListAdapter; import info.jiangpeng.helper.RequestParams; import info.jiangpeng.model.Book; import info.jiangpeng.task.SearchMyBookTask; import java.util.ArrayList; public class BookListFragment extends ListFragment { private BookListAdapter bookArrayAdapter; private ArrayList<DataChangeListener> listeners; //TODO: remove static private static RequestParams requestParams; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); listeners = new ArrayList<DataChangeListener>(); bookArrayAdapter = new BookListAdapter(getActivity(), R.layout.book_item, R.id.book_title); setListAdapter(bookArrayAdapter); } @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); Book book = getBook(position); Intent intent = new Intent(getActivity(), BookDetailsActivity.class); intent.putExtra("BOOK_DETAILS_URL", book.getBookDetailsUrl()); getActivity().startActivity(intent); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); return inflater.inflate(R.layout.list, container, false); } @Override public void onResume() { super.onResume(); System.out.println("--------bookListFragment resumed and search again"); executeSearchByReadingStatus(); if (requestParams != null) { requestParams.setUserChanged(false); } } public void addDataChangeListener(DataChangeListener listener) { listeners.add(listener); } public void executeSearchByReadingStatus() { String tag = getTag(); System.out.println("------------search tag = " + tag); System.out.println("------------requestParams = " + requestParams); if (requestParams != null) { System.out.println("------------requestParams.isUserChanged = " + requestParams.isUserChanged()); } if (tag != null && requestParams != null) { getActivity().getActionBar().setTitle(requestParams.getUserName() + "的书单"); searchUserBooks(requestParams, tag.toLowerCase()); } } public int getBookCount() { return bookArrayAdapter.getCount(); } public void add(Book book) { bookArrayAdapter.add(book); notifyListingViewAndProgressBar(); } private Book getBook(int position) { return bookArrayAdapter.getItem(position); } public void searchUserBooks(RequestParams params, String tag) { // if (bookArrayAdapter.getCount() == 0) { bookArrayAdapter.clear(); System.out.println("------------params.getUserName() = " + params.getUserName()); new SearchMyBookTask(this).execute(this.requestParams.getUserId(), params.getAccessToken(), params.getAccessTokenSecret(), tag.toLowerCase()); // } } private void notifyListingViewAndProgressBar() { bookArrayAdapter.notifyDataSetChanged(); for (DataChangeListener listener : listeners) { listener.update(); } } public void resetResultList() { bookArrayAdapter.clear(); } public void setRequestParams(RequestParams requestParams) { System.out.println("------------setting requestParams = " + requestParams); this.requestParams = requestParams; } }