import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.Context;
-import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import be.nikiroo.fanfix.data.MetaData;
import be.nikiroo.fanfix.reader.Reader;
*/
public class AndroidReaderGroup extends Fragment {
private OnFragmentInteractionListener listener;
+ private Map<View, AndroidReaderBook> books = new HashMap<View, AndroidReaderBook>();
public interface OnFragmentInteractionListener {
void onFragmentInteraction(MetaData meta);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- // Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_android_reader_group,
container, false);
}
listener = null;
}
- public void fill(final Reader reader, final String source) {
- new AsyncTask<Void, Void, List<MetaData>>() {
+ public void fill(final List<MetaData> metas, final Reader reader) {
+ final List<MetaData> datas = new ArrayList<MetaData>(metas);
+
+ ListView list = getView().findViewById(R.id.Group_root);
+ list.setAdapter(new BaseAdapter() {
+ @Override
+ public int getCount() {
+ return datas.size();
+ }
+
@Override
- protected List<MetaData> doInBackground(Void... voids) {
- return reader.getLibrary().getListBySource(source);
+ public long getItemId(int position) {
+ return -1; // TODO: what is a "row id" in this context?
}
@Override
- protected void onPostExecute(List<MetaData> metas) {
- for (MetaData meta : metas) {
- String tag = "Book_" + meta.getLuid();
- tag = null; // TODO: how does it work?
- AndroidReaderBook book = null;// (AndroidReaderBook)
- // getFragmentManager().findFragmentByTag(tag);
- if (book == null) {
- book = new AndroidReaderBook();
- FragmentTransaction trans = getFragmentManager()
- .beginTransaction();
- trans.add(R.id.AndroidReaderGroup_root, book, tag);
- trans.commit();
- getFragmentManager().executePendingTransactions();
- }
- book.fill(reader, meta.getLuid());
+ public Object getItem(int position) {
+ return datas.get(position);
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ AndroidReaderBook book = books.get(convertView);
+ if (book == null) {
+ book = new AndroidReaderBook();
+
+ FragmentTransaction trans = getFragmentManager()
+ .beginTransaction();
+ trans.add(book, null);
+ trans.commit();
+ getFragmentManager().executePendingTransactions();
+
+ books.put(book.getView(), book);
}
+
+ MetaData meta = (MetaData) getItem(position);
+ book.fill(meta, reader);
+
+ return book.getView();
}
- }.execute();
+ });
}
}