如何解决“必须在'FirebaseRecyclerAdapter'中声明为抽象或实现抽象方法'onBindViewHolder(VH,int,T)'”

时间:2019-05-12 09:31:54

标签: java android firebase

我正在尝试使用RecyclerView从Firebase数据库显示数据,但收到以下错误

  

类“源自FirebaseRecyclerAdapter的匿名类”必须   被声明为抽象或实现抽象方法   “ FirebaseRecyclerAdapter”中的“ onBindViewHolder(VH,int,T)”

我无法弄清楚我在做什么错,这是我正在使用的代码

    package com.example.tickettap.Admin;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.example.tickettap.R;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;


public class ShowData extends AppCompatActivity {

    RecyclerView recyclerView;
    FirebaseDatabase firebaseDatabase;
    DatabaseReference myRef;

    private FirebaseRecyclerAdapter<ShowDataItems, DisplayDataViewHolder> mFirebaseAdapter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_delete_data);

        firebaseDatabase = FirebaseDatabase.getInstance();
        myRef = FirebaseDatabase.getInstance().getReference("User");

        recyclerView = (RecyclerView) findViewById(R.id.displayData);
        recyclerView.setLayoutManager(new LinearLayoutManager(ShowData.this));
        Toast.makeText(ShowData.this, "Retrieving Data", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onStart() {
        super.onStart();
        mFirebaseAdapter = new FirebaseRecyclerAdapter<ShowDataItems, DisplayDataViewHolder>
                (ShowDataItems.class, R.layout.activity_show_single_item, DisplayDataViewHolder.class, myRef) {

            public void populateViewHolder(final DisplayDataViewHolder viewHolder, ShowDataItems model, final int position) {
                viewHolder.Email(model.getEmail());
                viewHolder.Role(model.getRole());


                //OnClick to delete selected data
                viewHolder.itemView.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(final View v) {
                        AlertDialog.Builder builder = new AlertDialog.Builder(ShowData.this);
                        builder.setMessage("Are you sure you wish to delete the selected data").setCancelable(false)
                                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        int selectedItems = position;
                                        mFirebaseAdapter.getRef(selectedItems).removeValue();
                                        mFirebaseAdapter.notifyItemRemoved(selectedItems);
                                        recyclerView.invalidate();
                                        onStart();
                                    }
                                })
                                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        dialog.cancel();
                                    }
                                });
                        AlertDialog dialog = builder.create();
                        dialog.setTitle("Confirm");
                        dialog.show();
                    }
                });


            }
        };

        recyclerView.setAdapter(mFirebaseAdapter);
    }

    //View Holder For Recycler View
    public static class DisplayDataViewHolder extends RecyclerView.ViewHolder {
        private final TextView Email;
        private final TextView Role;


        public DisplayDataViewHolder(final View itemView) {
            super(itemView);
            Email = (TextView) itemView.findViewById(R.id.getEmail);
            Role = (TextView) itemView.findViewById(R.id.getRole);


        }

        private void Email(String email) {
            Email.setText(email);
        }

        private void Role(String role) {
            Role.setText(role);
        }


    }
}

与该行有关的错误

 mFirebaseAdapter = new FirebaseRecyclerAdapter<ShowDataItems, DisplayDataViewHolder>

非常感谢您的帮助

0 个答案:

没有答案