简体   繁体   中英

Realm results returns null

I have adapter, model and activity in my android app.

Adapter

public class Adapter extends RecyclerView.Adapter<Adapter.viewHolder> {
    private Context context;
    private List<ModelPost> modelPost;

    public Adapter(Context context, List<ModelPost> modelPost) {
        this.context = context;
        this.modelPost = modelPost;
    }

    @NonNull
    @Override
    public viewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_post, viewGroup, false);
        return new viewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull viewHolder viewHolder, int i) {
        ModelPost modelPost = this.modelPost.get(i);
        viewHolder.textView.setText(modelPost.getTitle());
        viewHolder.cardView.setOnClickListener(v -> {
            Intent intent = new Intent(Adapter.this.context, SinglePost.class);
            intent.putExtra("ID", modelPost.getID() + "");
            intent.putExtra("Title", modelPost.getTitle() + "");
            intent.putExtra("Content", modelPost.getContent() + "");
            intent.putExtra("Category", modelPost.getCategory() + "");
            intent.putExtra("Expert", modelPost.getExpert() + "");
            intent.putExtra("Image", modelPost.getImage() + "");
            intent.putExtra("URL", modelPost.getURL() + "");
            intent.putExtra("Video", modelPost.getVideo() + "");

            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        });
        Glide.with(context)
                .load(modelPost.getImage())
                .skipMemoryCache(true)
                .thumbnail(0.2f)
                .placeholder(R.drawable.loading)
                .into(viewHolder.image);
    }

    @Override
    public int getItemCount() {
        return modelPost.size();
    }

    class viewHolder extends RecyclerView.ViewHolder {
        CardView cardView;
        ImageView image;
        TextView textView;

        viewHolder(@NonNull View itemView) {
            super(itemView);
            cardView = itemView.findViewById(R.id.coCard);
            image = itemView.findViewById(R.id.coImage);
            textView = itemView.findViewById(R.id.coTitle);
        }
    }
}

ModelPost

public class ModelPost extends RealmObject implements Serializable {
    int ID;
    private String Title;
    private String Image;
    private String Content;
    private String Category;
    private String Expert;
    private String URL;
    private String Video;

    public ModelPost() {

    }

    public Integer getID() {
        return ID;
    }

    public void setID(Integer ID) {
        this.ID = ID;
    }

    public String getTitle() {
        return Title;
    }

    public void setTitle(String title) {
        Title = title;
    }

    public String getImage() {
        return Image;
    }

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

    public String getContent() {
        return Content;
    }

    public void setContent(String content) {
        Content = content;
    }

    public String getCategory() {
        return Category;
    }

    public void setCategory(String category) {
        Category = category;
    }

    public String getExpert() {
        return Expert;
    }

    public void setExpert(String expert) {
        Expert = expert;
    }

    public String getURL() {
        return URL;
    }

    public void setURL(String URL) {
        this.URL = URL;
    }

    public String getVideo() {
        return Video;
    }

    public void setVideo(String video) {
        Video = video;
    }

I used this query to get data from model in SinglePost Activity.

realm.executeTransaction(realm -> {
RealmResults<ModelPost> results = realm.where(ModelPost.class).findAll();

and I defined these in class

Realm realm;
List<ModelPost> modelPost = new ArrayList<>();

But results returns null. How can I get values from ModelPost ? I think ModelPost.class have no data in activity. Actually I don't know to define modelPost in Activity.How can I defined ModelPost with data from server in this activity?

@Override
public int getItemCount(){
return modelPost==null ? 0: modelPost.size();
}

And follow the documentation of realm 
https://realm.io/docs/java/latest/#writes
 @Override
        public int getItemCount() {
         if(modelPost != null){       
    return modelPost.size();

    }else{
     return 0;
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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