diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoriesAdapter.java b/app/src/main/java/fr/free/nrw/commons/category/CategoriesAdapter.java new file mode 100644 index 000000000..c46f3dcc2 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoriesAdapter.java @@ -0,0 +1,107 @@ +package fr.free.nrw.commons.category; + + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CheckedTextView; +import android.widget.TextView; + +import java.util.ArrayList; +import java.util.TreeSet; + +import fr.free.nrw.commons.R; + +public class CategoriesAdapter extends BaseAdapter { + private Context context; + private ArrayList items; + + private static final int TYPE_ITEM = 0; + private static final int TYPE_SEPARATOR = 1; + private TreeSet sectionHeader = new TreeSet(); + + private CategoriesAdapter(Context context, ArrayList items) { + this.context = context; + this.items = items; + } + + public int getCount() { + return items.size(); + } + + public Object getItem(int i) { + return items.get(i); + } + + public ArrayList getItems() { + return items; + } + + public void setItems(ArrayList items) { + this.items = items; + } + + public long getItemId(int i) { + return i; + } + + @Override + public int getItemViewType(int position) { + // If type is 1, the line is a header, otherwise it is an item + return sectionHeader.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM; + } + + @Override + public int getViewTypeCount() { + return 2; + } + + public View getView(int i, View view, ViewGroup viewGroup) { + CheckedTextView checkedView; + + if(view == null) { + checkedView = (CheckedTextView) getActivity().getLayoutInflater().inflate(R.layout.layout_categories_item, null); + + } else { + checkedView = (CheckedTextView) view; + } + + CategorizationFragment.CategoryItem item = (CategorizationFragment.CategoryItem) this.getItem(i); + checkedView.setChecked(item.selected); + checkedView.setText(item.name); + checkedView.setTag(i); + + return checkedView; + } + + // TODO: Separator getView reference + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder = null; + int rowType = getItemViewType(position); + + if (convertView == null) { + holder = new ViewHolder(); + switch (rowType) { + case TYPE_ITEM: + convertView = mInflater.inflate(R.layout.snippet_item1, null); + holder.textView = (TextView) convertView.findViewById(R.id.text); + break; + case TYPE_SEPARATOR: + convertView = mInflater.inflate(R.layout.snippet_item2, null); + holder.textView = (TextView) convertView.findViewById(R.id.textSeparator); + break; + } + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + holder.textView.setText(mData.get(position)); + + return convertView; + } + + public static class ViewHolder { + public TextView textView; + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index c7f11c935..869311684 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -264,68 +264,6 @@ public class CategorizationFragment extends Fragment { } } - private class CategoriesAdapter extends BaseAdapter { - private Context context; - private ArrayList items; - - private static final int TYPE_ITEM = 0; - private static final int TYPE_SEPARATOR = 1; - private TreeSet sectionHeader = new TreeSet(); - - private CategoriesAdapter(Context context, ArrayList items) { - this.context = context; - this.items = items; - } - - public int getCount() { - return items.size(); - } - - public Object getItem(int i) { - return items.get(i); - } - - public ArrayList getItems() { - return items; - } - - public void setItems(ArrayList items) { - this.items = items; - } - - public long getItemId(int i) { - return i; - } - - @Override - public int getItemViewType(int position) { - // If type is 1, the line is a header, otherwise it is an item - return sectionHeader.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM; - } - - @Override - public int getViewTypeCount() { - return 2; - } - - public View getView(int i, View view, ViewGroup viewGroup) { - CheckedTextView checkedView; - - if(view == null) { - checkedView = (CheckedTextView) getActivity().getLayoutInflater().inflate(R.layout.layout_categories_item, null); - - } else { - checkedView = (CheckedTextView) view; - } - - CategoryItem item = (CategoryItem) this.getItem(i); - checkedView.setChecked(item.selected); - checkedView.setText(item.name); - checkedView.setTag(i); - - return checkedView; - } - } /** * Makes asynchronous calls to the Commons MediaWiki API via anonymous subclasses of