Я пытался отобразить ошибку на listadapter Item
из метода. Таким образом, в основном, когда метод вызывается, ошибка будет отображаться в этом указанном элементе c, а при повторном вызове он исчезнет.
public class AddedDevicesListAdapter extends RecyclerView.Adapter<BaseViewHolder> implements ItemProvider {
enum ItemTypes {
TITLE,
ITEM
}
private final LayoutInflater inflater;
private List<Object> items;
private Context context;
private final View.OnClickListener onClickListener;
private RecyclerView.ViewHolder viewHolder;
public AddedDevicesListAdapter(Context context, View.OnClickListener onClickListener) {
this.inflater = LayoutInflater.from(context);
this.onClickListener = onClickListener;
this.context = context;
items = new ArrayList<>();
}
public void setItems(List<DocumentDevice> items) {
// create new to avoid wierd reference problems on Android 7
this.items = new ArrayList<>();
if(!items.isEmpty()) this.items.add(context.getResources().getString(R.string.doc_devices));
this.items.addAll(items);
notifyDataSetChanged();
}
public void clear() {
items.clear();
notifyDataSetChanged();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
public void displayError(int position, boolean shouldBeVisible){
// getItem(position).getClass().
// if(viewHolder != null){
// if(shouldBeVisible){
// viewHolder.itemView.
// viewHolder.getChildAt(position).findViewById(R.id.addedDeviceError).setVisibility(View.VISIBLE);
// } else {
// viewHolder.getChildAt(position).findViewById(R.id.addedDeviceError).setVisibility(View.GONE);
// }
// }
}
@Override
public int getItemViewType(int position) {
if (getItem(position) instanceof DocumentDevice){
return ItemTypes.ITEM.ordinal();
}
return ItemTypes.TITLE.ordinal();
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == ItemTypes.ITEM.ordinal()) {
View view = inflater.inflate(R.layout.list_item_vertical, parent, false);
return new ItemViewHolder(view, this);
} else {
return new TitleViewHolder(inflater.inflate(R.layout.title_item, parent, false), this);
}
}
@Override
public void onBindViewHolder(final BaseViewHolder holder, int position) {
holder.bind(position);
viewHolder = holder;
}
@Override
public int getItemCount() {
return items.size();
}
class ItemViewHolder extends BaseViewHolder<DocumentDevice> {
@BindView(R.id.title)
TextView title;
@BindView(R.id.subTitle)
TextView subTitle;
@BindView(R.id.imageView)
ImageView arrow;
@BindView(R.id.addedDeviceError)
ImageView displayError;
ItemViewHolder(View view, ItemProvider provider) {
super(view, provider);
}
@Override
public void bind(final DocumentDevice documentDevice) {
title.setText(documentDevice.getLocalizedDeviceName());
subTitle.setText(documentDevice.getId());
itemView.setTag(documentDevice);
itemView.setOnClickListener(onClickListener);
// arrow.setVisibility(View.GONE);
}
public void showError(){
}
}
class TitleViewHolder extends BaseViewHolder<String> {
@BindView(R.id.title)
TextView title;
TitleViewHolder(View view, ItemProvider provider) {
super(view, provider);
}
@Override
public void bind(final String item) {
title.setText(item);
}
}
}
Я испробовал довольно много разных возможностей, но ни одна из них, похоже, не работает для меня. Этот код здесь моя последняя попытка.
Что я делаю не так?