X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2Fandroid%2FAndroidReaderGroup.java;h=2d4819942a7d7b83c67fe645bb149b1015049004;hb=410f1eaefe49d6b7fc02ae9e3b5d4856d51cfecf;hp=d998a8cf9c40b947226f0995d489052a957fc137;hpb=649684189468206b46778bbc18d8bb47e66f7be1;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/reader/android/AndroidReaderGroup.java b/src/be/nikiroo/fanfix/reader/android/AndroidReaderGroup.java index d998a8c..2d48199 100644 --- a/src/be/nikiroo/fanfix/reader/android/AndroidReaderGroup.java +++ b/src/be/nikiroo/fanfix/reader/android/AndroidReaderGroup.java @@ -3,13 +3,17 @@ package be.nikiroo.fanfix.reader.android; 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; @@ -21,6 +25,7 @@ import be.nikiroo.fanfix.reader.Reader; */ public class AndroidReaderGroup extends Fragment { private OnFragmentInteractionListener listener; + private Map books = new HashMap(); public interface OnFragmentInteractionListener { void onFragmentInteraction(MetaData meta); @@ -33,7 +38,6 @@ public class AndroidReaderGroup extends Fragment { @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); } @@ -52,31 +56,46 @@ public class AndroidReaderGroup extends Fragment { listener = null; } - public void fill(final Reader reader, final String source) { - new AsyncTask>() { + public void fill(final List metas, final Reader reader) { + final List datas = new ArrayList(metas); + + ListView list = getView().findViewById(R.id.Group_root); + list.setAdapter(new BaseAdapter() { + @Override + public int getCount() { + return datas.size(); + } + @Override - protected List 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 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(); + }); } }