私はAndroidで新品です。私のアプリケーションはRecycler Viewを利用しており、firebaseはRecyclerビューのチェックボックスを追加、編集するトリガアップデートを送信します。リサイクルから取り除く外出先で見る
インタラクティブはサーバーからトリガーされた更新を取得し、サーバーからプレゼンターを通じてaddItem、UpdateItem、またはRemoveItemメソッドを呼び出します。
私はRecycler Viewに追加して更新することはできますが、Recyclerビューからアイテムを削除しようとすると、アダプターの位置を取得するのが困難です。
反復処理では、ArrayListのインデックスを調べることができますが、削除するビューの位置を取得する方法はわかりません。
以下のremoveItemメソッドのコードは、必要なビューを完全に削除しますが、最後のビューを再度複製(追加)します。 私が必要とするのは、複製ビューを追加せずにビュー全体を削除することです。私はgetadapterPosition()
を得る方法を知らないので、私はonClickのようなローカルトリガーを扱っていないからです。
public class CustomShoppingRecyclerAdapter extends RecyclerView.Adapter<CustomShoppingRecyclerAdapter.ViewHolder> implements ShoppingAdapterView {
private final ArrayList<Shopping> mMessageList = new ArrayList<>();
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_item, parent, false);
vh= new ViewHolder(v);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
final Shopping current = mMessageList.get(position);
holder.mShoppingItemCheckBox.setTag(current.getItem());
holder.mShoppingItemCheckBox.setText(current.getItem());
holder.mShoppingItemCheckBox.setChecked(current.getItemStatus());
holder.mShoppingItemCheckBox.setOnClickListener(null);
holder.mShoppingItemCheckBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
current.setItemStatus(holder.mShoppingItemCheckBox.isChecked());
presenter.updateItemToServer(current);
tag= (String) holder.mShoppingItemCheckBox.getTag();
}
});
}
@Override
public void removeItem(Shopping shopping) {
Integer index = 0;
for (Shopping _item : mMessageList) {
index = mMessageList.indexOf(_item);
if (_item.getItem().equals(shopping.getItem())) {
if (index != -1) {
mMessageList.remove(index);
notifyItemRemoved(index);
}
}
}
}
class ViewHolder extends RecyclerView.ViewHolder {
private CheckBox mShoppingItemCheckBox;
private TextView mMessageTextView;
ViewHolder(View itemView) {
super(itemView);
itemView.findViewById(R.id.shopping_author);
mShoppingItemCheckBox = (CheckBox) itemView.findViewById(R.id.shopping_item);
}
iteratorを使用してiterator.remove()で削除しようとしましたか? –
私はより明確にするために私の質問を更新しました。 arraylistから削除したアイテムに基づいてビューを削除する必要があります。 – topgun