У меня есть приложения, в которых у пользователей есть список задач. Как только вы нажмете на элемент, он создаст второй список под перечеркнутым. Я также хотел бы добавить к нему заголовок. Я нашел несколько библиотек, чтобы помочь, но я использую ListItemBinding в моем пользовательском классе ViewHolder. В то время как некоторые из этих библиотек требуют просмотра. Есть ли способ реализовать эти библиотеки при использовании ListItemBinding или любым другим способом?
public class GroceryListAdapter extends RecyclerView.Adapter<GroceryListAdapter.GroceryListViewHolder> {
//private static final String LOG_TAG = "LOGGER: " + GroceryListAdapter.class.getSimpleName();
private OnClickInListAdapter onClickInListAdapter;
private List<GroceryItem> groceries;
private Context context;
private View strikeThroughLine;
public GroceryListAdapter(Context context, List<GroceryItem> groceries) {
this.groceries = groceries;
this.context = context;
}
@Override
public void onBindViewHolder(@NonNull final GroceryListViewHolder holder, final int position) {
GroceryItem groceryItem = groceries.get(position);
holder.bind(groceryItem);
changeFont(groceries.get(holder.getAdapterPosition()).isChecked(), holder.itemView);
}
@NonNull
@Override
public GroceryListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
ListItemBinding listItemBinding = ListItemBinding.inflate(LayoutInflater.from(parent.getContext()),
parent,
false);
return new GroceryListViewHolder(listItemBinding);
}
@Override
public long getItemId(int position) {
return groceries.get(position).getUid();
}
@Override
public int getItemCount() {
return groceries.size();
}
public void setGroceries(List<GroceryItem> groceries){
this.groceries = groceries;
notifyDataSetChanged();
}
private void changeFont(boolean isChecked, View view) {
strikeThroughLine = view.findViewById(R.id.strike_through_line);
if (isChecked) {
strikeThroughLine.setVisibility(View.VISIBLE);
} else {
strikeThroughLine.setVisibility(View.GONE);
}
}
public interface OnClickInListAdapter {
void onClickInListAdapter(GroceryItem groceryItem);
}
public class GroceryListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
View groceryItem;
ListItemBinding listItemBinding;
private GroceryListViewHolder(ListItemBinding listItemBinding) {
super(listItemBinding.getRoot());
groceryItem = itemView.findViewById(R.id.grocery_item_view);
this.listItemBinding = listItemBinding;
itemView.setOnClickListener(this);
}
private void bind(GroceryItem groceryItem) {
this.listItemBinding.setGrocery(groceryItem);
}
@Override
public void onClick(View v) {
onClickInListAdapter = (OnClickInListAdapter) context;
if (!groceries.get(getAdapterPosition()).isChecked()) {
groceries.get(getAdapterPosition()).setChecked(IS_CHECKED_TRUE);
onClickInListAdapter.onClickInListAdapter(groceries.get(getAdapterPosition()));
} else {
groceries.get(getAdapterPosition()).setChecked(IS_CHECKED_FALSE);
onClickInListAdapter.onClickInListAdapter(groceries.get(getAdapterPosition()));
}
}
}
}