0

I am getting error

"com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type krunoslavkovac.ferit.test.Add"

And can't figure it out why is it happening.

I've searched many solutions here but still didn't figure it out.

MAIN ACTIVITY :

public class MainActivity extends AppCompatActivity {
    EditText et_task ;
    Button btn_add;
    RecyclerView recycler_view;

    //Firebase
    FirebaseDatabase database;
    DatabaseReference dbRef ;


    FirebaseRecyclerOptions<Add> options;
    FirebaseRecyclerAdapter<Add, MyRecyclerViewHolder> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et_task = (EditText) findViewById(R.id.et_task);
        btn_add = (Button) findViewById(R.id.btn_add);
        recycler_view = (RecyclerView) findViewById(R.id.recycler_view);
        recycler_view.setLayoutManager(new LinearLayoutManager(this));

        database = FirebaseDatabase.getInstance();
        dbRef = database.getReference("Test");

        btn_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                addTask();
            }
        });
        displayTask();
    }

    private void addTask(){
        String task = et_task.getText().toString();
        Add add = new Add(task);

        dbRef.push().setValue(task);
        adapter.notifyDataSetChanged();
    }

    private void displayTask() {
        options =
                new FirebaseRecyclerOptions.Builder<Add>()
                        .setQuery(dbRef,Add.class)
                        .build();

        adapter =
                new FirebaseRecyclerAdapter<Add, MyRecyclerViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull MyRecyclerViewHolder holder, int position, @NonNull Add model) {
                        holder.tv_task.setText(model.getTask());
                    }

                    @NonNull
                    @Override
                    public MyRecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
                        View itemView = LayoutInflater.from(getBaseContext()).inflate(R.layout.add_item,viewGroup, false);
                        return new MyRecyclerViewHolder(itemView);
                    }
                };
        adapter.startListening();
        recycler_view.setAdapter(adapter);
    }
}

Add class

public class Add {
    private String task;

    public Add(){

    }
    public Add(String task) {
        this.task = task;
    }


    public String getTask() {
        return task;
    }

    public void setTask(String task) {
        this.task = task;
    }
}

RecyclervViewHolder

public class MyRecyclerViewHolder extends RecyclerView.ViewHolder {

TextView tv_task;

public MyRecyclerViewHolder(@NonNull View itemView) {
    super(itemView);
    tv_task = (TextView) itemView.findViewById(R.id.tv_task);
   }
}

Database:

I want to display data from firebase.

5
  • share your firebase structure data. Commented Jun 6, 2019 at 9:59
  • imgur.com/crMEQ44 here it is Commented Jun 6, 2019 at 10:04
  • Unable to see image. Commented Jun 6, 2019 at 10:06
  • Now you should see. Commented Jun 6, 2019 at 10:08
  • I post my ans,check it Commented Jun 6, 2019 at 10:16

1 Answer 1

1

Replace this

dbRef.push().setValue(task);

To

dbRef.push().setValue(add);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.