如何查询以仅显示具有多个属性的领域数据库中的单个属性?

时间:2019-04-01 10:21:41

标签: android realm

我打算构建一个使用领域数据库的应用程序。我有7个属性的表。数据库模型类如下:

package com.abdkasim.Tremp130319.Realm;

import io.realm.RealmObject;

public class CasesModel extends RealmObject {

    String fileRef;
    String parties;
    String court;
    String courtAt;
    String caseNo;
    String caseStatus;
    String nextDate;

    @Override
    public String toString() {
        return " \n CasesModel{" +
                "fileRef='" + fileRef + '\'' +
                ", parties='" + parties + '\'' +
                ", \n court='" + court + '\'' +
                ", courtAt='" + courtAt + '\'' +
                ", \n caseNo='" + caseNo + '\'' +
                ", caseStatus='" + caseStatus + '\'' +
                ", nextDate='" + nextDate + '\'' +
                '}';
    }

问题是在某些情况下,在OnCreate上的活动中,我只想显示1个属性,而在其他活动中,我只想显示5个属性。我们如何只能从7个属性中仅提取1个或5个属性,并将其显示在ListView中。我发现答案仅显示2年前问过的1个字段,并且代码在我现在使用的android studio 3.3.2中不再起作用:Fetch a single column from Realm Database (Android)。给定的答案是下面的代码,用于从表中获取1个属性(即名称)并将其放入ArrayList中,但是就像我说的那样,它现在无法在android studio中使用。

package com.abdkasim.Tremp130319.OtherPages;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.text.TextWatcher;
import java.util.ArrayList;

import io.realm.Realm;
import io.realm.RealmResults;

import com.abdkasim.Tremp130319.R;
import com.abdkasim.Tremp130319.Realm.CasesModel;

public class AllCasesActivity extends AppCompatActivity {
    private ArrayAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_all_cases);


        ListView list = (ListView) findViewById(R.id.listView);
        EditText theFilter = (EditText) findViewById(R.id.searchFilter);


        Realm realm;
        realm = Realm.getDefaultInstance();


        RealmResults<CasesModel> results = query.findAll();

        return results;

        ArrayList<String> name = new ArrayList<>();
        for (i = 0; i<results.size; i++) {name.add(results.get(i).getName());
    }

}

因此,如果您能帮助我使用查询语法在OnCreate时立即显示1属性以及多个属性,我非常感谢。我创建了一个适配器,以在Cardview中显示上述5个属性,但不知道如何查询领域数据库以仅显示我需要的5个字段并将其链接到该适配器。

您的回答非常感谢,因为我在这里停留了一段时间。

谢谢。

1 个答案:

答案 0 :(得分:0)

您的问题中缺少一些信息-您想显示哪个字段,如何显示它?

您从其他地方获取的代码不是“现在不完整”,不是“现在无法在android studio中工作”。大部分在那儿。

至于“仅一个属性”,与“您的操作方式”并没有多大区别,唯一的区别在于列表项的制作方式。我将向您展示为您的类中的任意项目执行此操作的代码,但其他任何属性的代码都相同,只是交换该属性。字符串连接可以实现多种属性。

因此,将您的代码更改为此。

public class AllCasesActivity extends AppCompatActivity {
  private ArrayAdapter<String> adapter;

  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_all_cases);


    ListView list = (ListView) findViewById(R.id.listView);
    EditText theFilter = (EditText) findViewById(R.id.searchFilter);


    Realm realm;
    realm = Realm.getDefaultInstance();


    RealmResults<CasesModel> results = realm.where(CasesModel.class).findAll();


    ArrayList<String> rows = new ArrayList<>();
    for (CasesModel caseModel : results)
    {
      rows.add(caseModel.fileRef);

    }

    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, rows);
    list.setAdapter(adapter);
  }