Skip to content

Commit 0f696ca

Browse files
authored
Merge pull request commons-app#806 from psh/categorization-recycler-view
Swapped the ListView for a RecyclerView on CategorizationFragment
2 parents d9caee8 + 3b79775 commit 0f696ca

16 files changed

+450
-381
lines changed

app/src/main/java/fr/free/nrw/commons/category/CategoriesAdapter.java

Lines changed: 0 additions & 67 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package fr.free.nrw.commons.category;
2+
3+
import com.pedrogomez.renderers.ListAdapteeCollection;
4+
import com.pedrogomez.renderers.RVRendererAdapter;
5+
import com.pedrogomez.renderers.RendererBuilder;
6+
7+
import java.util.Collections;
8+
import java.util.List;
9+
10+
class CategoriesAdapterFactory {
11+
private final CategoriesRenderer.CategoryClickedListener listener;
12+
13+
CategoriesAdapterFactory(CategoriesRenderer.CategoryClickedListener listener) {
14+
this.listener = listener;
15+
}
16+
17+
public RVRendererAdapter<CategoryItem> create(List<CategoryItem> placeList) {
18+
RendererBuilder<CategoryItem> builder = new RendererBuilder<CategoryItem>()
19+
.bind(CategoryItem.class, new CategoriesRenderer(listener));
20+
ListAdapteeCollection<CategoryItem> collection = new ListAdapteeCollection<>(
21+
placeList != null ? placeList : Collections.<CategoryItem>emptyList());
22+
return new RVRendererAdapter<>(builder, collection);
23+
}
24+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package fr.free.nrw.commons.category;
2+
3+
import android.view.LayoutInflater;
4+
import android.view.View;
5+
import android.view.ViewGroup;
6+
import android.widget.CheckedTextView;
7+
8+
import com.pedrogomez.renderers.Renderer;
9+
10+
import butterknife.BindView;
11+
import butterknife.ButterKnife;
12+
import fr.free.nrw.commons.R;
13+
14+
class CategoriesRenderer extends Renderer<CategoryItem> {
15+
@BindView(R.id.tvName) CheckedTextView checkedView;
16+
private final CategoryClickedListener listener;
17+
18+
CategoriesRenderer(CategoryClickedListener listener) {
19+
this.listener = listener;
20+
}
21+
22+
@Override
23+
protected View inflate(LayoutInflater layoutInflater, ViewGroup viewGroup) {
24+
return layoutInflater.inflate(R.layout.layout_categories_item, viewGroup, false);
25+
}
26+
27+
@Override
28+
protected void setUpView(View view) {
29+
ButterKnife.bind(this, view);
30+
}
31+
32+
@Override
33+
protected void hookListeners(View view) {
34+
view.setOnClickListener(new View.OnClickListener() {
35+
@Override
36+
public void onClick(View v) {
37+
CategoryItem item = getContent();
38+
item.setSelected(!item.isSelected());
39+
checkedView.setChecked(item.isSelected());
40+
if (listener != null) {
41+
listener.categoryClicked(item);
42+
}
43+
}
44+
});
45+
}
46+
47+
@Override
48+
public void render() {
49+
CategoryItem item = getContent();
50+
checkedView.setChecked(item.isSelected());
51+
checkedView.setText(item.getName());
52+
}
53+
54+
interface CategoryClickedListener {
55+
void categoryClicked(CategoryItem item);
56+
}
57+
}

0 commit comments

Comments
 (0)