如何查询以仅显示具有多个属性的领域数据库中的单个 属性?
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);
}
我打算构建一个使用领域数据库的应用程序。我有一个 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 中不再有效:
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);
}