2

RecyclerViewRealmと一緒に使用して学習しようとしています。私はhereからの公式チュートリアルに従っています。RecyclerViewでRealm Androidアダプタを使用する方法

しかし、自分でプログラムを書いたときに、例そのものを複製する際にエラーに直面しています。

Realm RecyclerView Adapter Error

公式MyRecyclerViewAdapterサンプルコードは、レルムの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' 
} 

残念ながら、私は非常によレルムに新しいと私は何を理解することができません正確にこのエラーは意味するので、私はそれについてもGoogleのことはできませんでした。

+2

それはちょうど 'スーパー()'呼び出しは 'Context'パラメータ – EpicPandaForce

+0

@EpicPandaForceが欠落していることを、おかげで、私は今それを得た。と言います学習のためだけに、上記の例が 'super'に' context'を必要としなかったのはなぜですか? –

+1

実際には 'Context'パラメータを使用せず、[1.5.0で削除される予定です](https://github.com/realm/realm-android-adapters/blob/master/CHANGELOG.md) – EpicPandaForce

答えて

4

インテリジェントヒントは、の最初の引数は、コンストラクタの呼び出しがContextである必要があります。

これを試してください。

public SubjectsAdapter(MainActivity activity, OrderedRealmCollection<TimeStamp> data) { 
    super(activity, data, true); 
    this.activity = activity; 
} 
関連する問題