我打算构建一个使用领域数据库的应用程序。我有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个字段并将其链接到该适配器。
您的回答非常感谢,因为我在这里停留了一段时间。
谢谢。
答案 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);
}