2017-12-06 5 views
1

약간의 문제가 있으며 결과를 찾을 수 없습니다. 네, 저는 약간의 연구도했습니다.RealmResults 크기가 0을 반환합니다.

변수가 있습니다. mResults = RealmResults < Drop>;

내가 입력 할 때 당신이 무슨 문제가 될 수 0 을 반환 >> mResults.size < <을

enter image description here

아래의 그림에서 볼 수 있지만, 이것은 데이터가? btw. 나는 kotlin을 사용하여 안드로이드에서 일하고 있습니다.

문제는 Recyclerview에서 getItemCount

ActivityMain에 ::::

Realm.init(this) 
     val configuration = RealmConfiguration.Builder().build() 
     Realm.setDefaultConfiguration(configuration) 
    mRealm = Realm.getDefaultInstance() 
      val results:RealmResults<Drop> = mRealm.where(Drop::class.java).findAll() 

      mToolbar = findViewById<Toolbar>(R.id.toolbar) 
      mRecycler = findViewById<RecyclerView>(R.id.rv_drops) 
      val manager = LinearLayoutManager(this) 

      mRecycler.layoutManager = manager 
      mRecycler.adapter = AdapterDrops(this, results) 

open class Drop : RealmObject { 
private var what: String? = null 
@PrimaryKey 
private var added: Long? = null 
private var whenT: Long? = null 
private var completed: Boolean? = null 

constructor(){} 

constructor(what: String, added: Long, whenT: Long, completed: Boolean) : super() { 
    this.what = what 
    this.added = added 
    this.whenT = whenT 
    this.completed = completed 
} 


fun getWhat(): String? { 
    return what 
} 

fun setWhat(what: String) { 
    this.what = what 
} 


fun getAdded(): Long? { 
    return added 
} 

fun setAdded(added: Long) { 
    this.added = added 
} 

fun getWhenT(): Long? { 
    return whenT 
} 

fun setWhenT(whenT: Long) { 
    this.whenT = whenT 
} 


fun getCompleted(): Boolean? { 
    return completed 
} 

fun setCompleted(completed: Boolean) { 
    this.completed = completed 
} 

}

class AdapterDrops: RecyclerView.Adapter<AdapterDrops.DropHolder> { 
    private var mInflater:LayoutInflater 
    private var mResults:RealmResults<Drop> 
    constructor(context:Context, results: RealmResults<Drop>){ 
     mInflater = LayoutInflater.from(context) 
     mResults = results 

    } 

    override fun onBindViewHolder(holder: DropHolder?, position: Int) { 
     val drop:Drop = mResults[position]!! 
     holder!!.mTextWhat.setText(drop.getWhat()) 

    } 

    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): DropHolder { 
     val view = mInflater.inflate(R.layout.row_drop, parent, false) 
     val holder = DropHolder(view) 
     return holder 
    } 

    override fun getItemCount(): Int { 
     return mResults.size <<<<< pröblem 
    } 

    class DropHolder: RecyclerView.ViewHolder { 


     var mTextWhat:TextView 
     constructor(itemView: View):super(itemView){ 
      mTextWhat = itemView.findViewById<TextView>(R.id.tv_what) 

     } 

    } 

} 

고마워. 당신이 빈 생성자 드롭 클래스를 정의하십시오

var mResults:OrderedRealmCollection<Drop> = Realm.getDefaultInstance().where(Drop::class.java).findAll() 

DB를에서 모든 레코드를 가져 오는대로

+0

이 몇 가지 코드 –

+0

좋아 I를 공유하시기 바랍니다 제거 활동에서 코드 아래에 제거하고 응용 프로그램 클래스에 붙여 넣기하세요 .. 호프 sömeöne 도울 수있다 – user3158589

답변

3

이보십시오.

필요가 드롭 클래스의 게터의 setter 메소드를 정의하지 않으려면 코 틀린에

//region initialise Realm for application 
    Realm.init(this) 
    //endregion 

    //region creating realm config 
    val realmConfig:RealmConfiguration = RealmConfiguration.Builder() 
      .name("kotlin_demo.realm") 
      .deleteRealmIfMigrationNeeded() 
      .build() 
    //endregion 

    //region for development purpose getting new realm db each time 
    Realm.deleteRealm(realmConfig) 

    Realm.setDefaultConfiguration(realmConfig) 
    //endregion 

그렇게

+0

남자, 그것은 OrderedRealmCOllectiön와 함께 wOrked. .. 감사합니다... 그러나 나에게 이유를 말해 줄 수 있냐? 왜 REalmresults의 크기가 0입니까? – user3158589

+0

Btw, 고마워. .. yüur 도움을 주셔서 감사합니다. – user3158589

+1

당신을위한 결과는 항상 OrderedRealm 객체의 콜렉션으로 나타납니다. 결과는 mo OrderedRealmCollection이 일반적인 객체 목록이 아닌 많은 매개 변수를 가지기 때문에 발생합니다. –