ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何在RecyclerView中使用Realm Android Adapter

2019-10-26 13:26:05  阅读:296  来源: 互联网

标签:recycler-adapter android-recyclerview realm adapter android


我正在尝试学习将RecyclerView与Realm结合使用.我正在从here开始关注官方教程.

但是当我自己编写程序时,我在复制示例本身时遇到错误.

Realm RecyclerView Adapter Error

MyRecyclerViewAdapter官方示例代码发布在Realm的Github上here.

我的SubjectsAdapter代码是-

package in.medicalguru.adapters;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import in.medicalguru.MainActivity;
import in.medicalguru.R;
import in.medicalguru.models.TimeStamp;
import io.realm.OrderedRealmCollection;
import io.realm.RealmRecyclerViewAdapter;

public class SubjectsAdapter extends RealmRecyclerViewAdapter<TimeStamp, SubjectsAdapter.MyViewHolder> {
    private final MainActivity activity;

    public SubjectsAdapter(MainActivity activity, OrderedRealmCollection<TimeStamp> data) {
        super(data, true);
        this.activity = activity;
    }


    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.row, parent, false);
        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        TimeStamp obj = getData().get(position);
        holder.data = obj;
        //holder.title.setText(obj.getSubjectName());
        holder.title.setText(obj.getTimeStamp());
    }


    class MyViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener {
        public TextView title;
        public TimeStamp data;

        public MyViewHolder(View view) {
            super(view);
            title = (TextView) view.findViewById(R.id.textview);
            view.setOnLongClickListener(this);
        }

        @Override
        public boolean onLongClick(View v) {
            //activity.deleteItem(data);
            return true;
        }
    }
}

项目的build.grade的相关部分:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
        classpath "io.realm:realm-gradle-plugin:2.2.1"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

模块的build.gradle的相关部分:

apply plugin: 'com.android.application'
apply plugin: 'realm-android'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.1'
    compile 'com.google.android.gms:play-services-ads:10.0.1'
    testCompile 'junit:junit:4.12'
    compile 'com.google.code.gson:gson:2.4'
    compile 'org.glassfish:javax.annotation:10.0-b28'
    compile 'com.android.support:recyclerview-v7:25.0.1'
    compile 'io.realm:android-adapters:1.4.0'
}

不幸的是,我对Realm并不陌生,我无法理解该错误的确切含义,所以我什至无法在Google上找到它.

解决方法:

IntelliJ提示说,构造函数的超级调用中的第一个参数应为Context.

尝试这个.

public SubjectsAdapter(MainActivity activity, OrderedRealmCollection<TimeStamp> data) {
    super(activity, data, true);
    this.activity = activity;
}

标签:recycler-adapter,android-recyclerview,realm,adapter,android
来源: https://codeday.me/bug/20191026/1936710.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有