2

我正在尝试使用RecyclerViewRealm来学习。我正在从here官方教程。如何使用Realm Android适配器和RecyclerView

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

Realm RecyclerView Adapter Error

官方MyRecyclerViewAdapter示例代码张贴here上境界的Github上。

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' 
} 

不幸的是,我很新的境界,我无法理解什么这个错误究竟意味着什么,所以我甚至无法谷歌。

+2

它只是说'super()'调用缺少'Context'参数 – EpicPandaForce

+0

@EpicPandaForce,谢谢,我现在明白了。为了学习,为什么上面提到的例子不需要'super'中的'context'? –

+1

因为他们实际上并没有使用'Context'参数,[计划在1.5.0中删除](https://github.com/realm/realm-android-adapters/blob/master/CHANGELOG.md) – EpicPandaForce

回答

4

IntelliJ提示说super中的第一个参数你的构造函数的调用应该是Context

试试这个。

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