繁体   English   中英

方法无法在 Android 中解析

[英]Method cannot resolve in Android

我有一个问题,方法“deleteItem”无法在这一行解决adapters.deleteItem(viewHolder.getAdapterPosition()); 即使我已经在public void deleteItem(int position)创建了该方法。我是否错误地放置了该方法?

Java代码:

    final FirestoreRecyclerAdapter adapters;
    fStore = FirebaseFirestore.getInstance();
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    final String current = user.getUid();
    Query query = fStore.collection("Users").document(user.getUid()).collection("Diary");
    FirestoreRecyclerOptions<ModelClass> options = new FirestoreRecyclerOptions.Builder<ModelClass>()
            .setQuery(query, ModelClass.class)
            .build();
    adapters = new FirestoreRecyclerAdapter<ModelClass, ModelViewHolder>(options) {

        @NonNull
        @Override
        public ModelViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_diary, parent, false);
            return new ModelViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull ModelViewHolder holder, int position,
                                        @NonNull ModelClass model) {

            holder.date.setText(model.getDate());
            holder.note.setText(model.getText());
            holder.time.setText(model.getTime());
            holder.divider.setText(model.getDivider());
        }

        public void deleteItem(int position) {
            getSnapshots().getSnapshot(position).getReference().delete();
        }
    };


    adapters.startListening();

    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    SpacingItemDecoration itemDecorator = new SpacingItemDecoration(20);
    recyclerView.addItemDecoration(itemDecorator);
    recyclerView.setAdapter(adapters);

    new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
            ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
           adapters.deleteItem(viewHolder.getAdapterPosition());
        }
    }).attachToRecyclerView(recyclerView);

}

 public class ModelViewHolder extends RecyclerView.ViewHolder {

    TextView date, time, note, divider;

    public ModelViewHolder(@NonNull View itemView) {
        super(itemView);

        date = itemView.findViewById(R.id.date_text);
        time = itemView.findViewById(R.id.time_textview);
        note = itemView.findViewById(R.id.note_textview);
        divider = itemView.findViewById(R.id.line_textview);
 }
}

您不能这样做,因为adapters是不包含此方法的FirestoreRecyclerAdapter

只需扩展FirestoreRecyclerAdapter并使用它。

public class CustomAdapter extends FirestoreRecyclerAdapter<....>{

    public CustomAdapter(@NonNull FirestoreRecyclerOptions<....> options) {
        super(options);
    }

    public void deleteItem(int i){ ... }

    @Override
    protected void onBindViewHolder(){....}

    @Override
    public ModelViewHolder onCreateViewHolder(){ ...}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM