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

How to query to display only a single property from realm database with multiple properties?

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

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 的 activity 中我只想显示 1 个 属性 而在其他 activity 中只显示 5 个属性。我们如何才能从总共 7 个属性中仅提取 1 个或 5 个属性并将它们显示在 ListView 中。我找到了仅显示 2 年前询问的 1 个字段的答案,并且代码在我现在使用的 android studio 3.3.2 中不再有效:。给定的答案是下面的代码,用于获取 1 属性,即来自 table 的名称并将其放入 ArrayList,但就像我说的,它现在在 android 工作室中不起作用。

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 属性 以及超过 1 属性 的查询语法,我将不胜感激。我创建了一个适配器以在 Cardview 中显示上述 5 个属性,但不知道如何查询领域数据库以仅显示我需要的 5 个字段并将其链接到该适配器。

非常感谢你的回答,因为我被困在这里很长一段时间了。

谢谢。

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

您从其他地方获取的代码不像 "not complete" 那样 "won't work in android studio now"。大部分都在那里。

至于 'only one property',这与 'how you do it' 没有太大区别,唯一的区别在于您如何制作列表项。我将向您展示对您的 class 中的任意项目执行此操作的代码,但任何其他 属性 的代码都是相同的,只需交换那个 属性。可以通过字符串连接实现多个属性。

所以,将您的代码更改为这个。

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);
  }