FirebaseRecyclerAdapter Adapter с помощью android studio не может конвертировать строку в объект - PullRequest
0 голосов
/ 01 января 2019

, когда я использую класс FirebaseRecyclerAdapter, выдает мне эту ошибку: Не удается преобразовать объект типа java.lang.String в тип com.photoblog.kyrillos.blog.Model.Users после добавления этих двух строк кода происходит сбой recyclerView.setHasFixedSize (истина);recyclerView.setLayoutManager (linearLayoutManager);

мой код

import android.content.Context; 
import android.content.Intent; 
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.photoblog.kyrillos.blog.Model.Users;
import com.photoblog.kyrillos.blog.R;

import de.hdodenhof.circleimageview.CircleImageView;

public class HomeActivity extends AppCompatActivity {

    private Toolbar homeToolbar;
    private FirebaseAuth mAuth;

    private DatabaseReference mDatabase;
    private RecyclerView recyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        mAuth = FirebaseAuth.getInstance();
        mDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(mAuth.getCurrentUser().getUid());
        homeToolbar = findViewById(R.id.homeToolbar);
        setSupportActionBar(homeToolbar);
        getSupportActionBar().setTitle("Home");

        recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
    }


    @Override
    protected void onStart() {
        super.onStart();
        FirebaseRecyclerAdapter<Users,BlogViewHolder > adapter =
                new FirebaseRecyclerAdapter<Users, BlogViewHolder >(
                        Users.class,
                        R.layout.blog_row,
                        BlogViewHolder .class,
                        mDatabase){
                    @Override
                    protected void populateViewHolder(BlogViewHolder  viewHolder, Users model, int position) {
                        viewHolder.setUserImage(HomeActivity.this,model.getImage());
                        viewHolder.setUserName(model.getName());
                        viewHolder.setPostImage(HomeActivity.this,model.getPostImage());
                        viewHolder.setPostDescription(model.getPostDescription());
                    }
                };
        recyclerView.setAdapter(adapter);
    }

    public static class BlogViewHolder extends RecyclerView.ViewHolder{
        View mView;
        public BlogViewHolder (@NonNull View itemView) {
            super(itemView);
            mView = itemView;
        }
        public void setUserImage(Context context,String url){
            CircleImageView imageView = mView.findViewById(R.id.postUserImageView);
            Glide.with(context)
                    .load(url)
                    .into(imageView);
        }
        public void setUserName(String userName){
            TextView view = mView.findViewById(R.id.postUserNameView);
            view.setText(userName);
        }

        public void setPostImage(Context context,String postImage){
            ImageView postImageView = mView.findViewById(R.id.postImageView);
            Glide.with(context)
                    .load(postImage)
                    .into(postImageView);
        }

        public void setPostDescription(String postDescription){
            TextView postTextView = mView.findViewById(R.id.postTextView);
            postTextView.setText(postDescription);
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.action_add){
            startActivity(new Intent(HomeActivity.this,PostActivity.class));
        } else if (item.getItemId() == R.id.action_settings) {
            startActivity(new Intent(HomeActivity.this,SettingsActivity.class));
        } else if (item.getItemId() == R.id.action_logOut) {
            mAuth.signOut();
            startActivity(new Intent(HomeActivity.this,LoginActivity.class));
            finish();
        }
        return super.onOptionsItemSelected(item);
    }
}

и модель пользователя:

public class Users {
    private String Email,Image, Name;
    private String Password ,Phone, postImage, postDescription;

    public Users() {
    }

    public Users(String email, String image, String name, String password, String phone, String postImage, String postDescription) {
        Email = email;
        Image = image;
        Name = name;
        Password = password;
        Phone = phone;
        this.postImage = postImage;
        this.postDescription = postDescription;
    }


    public String getEmail() {
        return Email;
    }

    public void setEmail(String email) {
        Email = email;
    }

    public String getImage() {
        return Image;
    }

    public void setImage(String image) {
        Image = image;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getPassword() {
        return Password;
    }

    public void setPassword(String password) {
        Password = password;
    }

    public String getPhone() {
        return Phone;
    }

    public void setPhone(String phone) {
        Phone = phone;
    }

    public String getPostImage() {
        return postImage;
    }

    public void setPostImage(String postImage) {
        this.postImage = postImage;
    }

    public String getPostDescription() {
        return postDescription;
    }

    public void setPostDescription(String postDescription) {
        this.postDescription = postDescription;
    }
}

1 Ответ

0 голосов
/ 03 января 2019

Извините, ребята, я нашел, где именно ошибка.вместо этой строки

mDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(mAuth.getCurrentUser().getUid());

я должен написать эту

mDatabase = FirebaseDatabase.getInstance().getReference().child("Users");

в любом случае спасибо ни за что.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...