1
我想通過使用查詢來檢索最喜歡的學校及其使用Realm的最喜歡學生的頭部列表視圖。通過接口添加Realm對象中的方法
的Point Grey中學
肯特
簡
我的問題是能否實現方法在境界對象,這樣我就可以使用的方法,以找出是否境界的結果是頭部或物品,如果它couldn不能完成,我可以如何避免並仍然從領域結果打印標題和列表視圖。
我在編譯下面的代碼時也有錯誤。它說
我的接口類 「干將isHeader不與任何字段關聯」:
public interface Item {
boolean isHeader();
}
我的模型類:
public class School extends RealmObject implements Item{
@Required
private String SchoolID;
private String SchoolName;
private RealmList<Student> Students;
@Ignore
private boolean answerSchool = true;
public boolean isHeader() {
return answerSchool;
}
getters/ setters
}
public class Student extends RealmObject implements Item {
@Required
private String StudentID;
private String StudentName;
private Boolean StudentFavourite;
@Ignore
private boolean answerStudent = false;
public boolean isHeader() {
return answerStudent;
}
getters /setters
}
我的適配器類別
public class FavourAdapter extends ArrayAdapter<Item> {
private Context context;
private ArrayList<Item> items;
private LayoutInflater vi;
public FavourAdapter(Context context, ArrayList<Item> Items) {
super(context, 0, Items);
this.context = context;
vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
final Item i = items.get(position);
if (i != null) {
if(i.isHeader()){
// Is si School ok in realm?
School si = (School)i;
v = vi.inflate(R.layout.row_favour_school, parent, false);
final TextView headerSection = (TextView) v.findViewById(R.id.rowFavSchoolName);
headerSection.setText(si.getSchoolName());
}else{
// Can I declare studentRow as Student in realm?
Student studentRow = (Student)i;
v = vi.inflate(R.layout.row_favour_student, parent, false);
final TextView title = (TextView)v.findViewById(R.id.rowFavStudentName);
if (title != null)
title.setText(studentRow.getStudentName());
}
}
return v;
}
}
我的主要活動類:
public class FavourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_favour);
Realm realm = Realm.getDefaultInstance();
ArrayList<Item> items = new ArrayList<Item>();
ListView listview=null;
listview=(ListView)findViewById(R.id.favStudents_list);
//Retrieve all the school object if they have any favourite students.
RealmResults<School> schools = realm.where(School.class).equalTo("Students.StudentFavourite", true).findAll();
//Get the first favourite school
items.add(schools.get(0));
//Retrieve all the favourite student from the first favourite school.
RealmResults<Student> favStudents = schools.get(0).getStudents().where().equalTo("StudentFavourite", true).findAll();
items.add(favStudents.get(0));
items.add(favStudents.get(1));
FavourAdapter fAdapter = new FavourAdapter(this, items);
listview.setAdapter(fAdapter);
//Log.d("fav", String.valueOf(favStudents));
}