Ich habe eine DB mit dem Namen RealmItem
und ich habe alle Benutzer haben Territorien sie sind angeschlossen. Welches ist n size
unbekannt. Jeder Artikel hat ein Feld namens territory
. Nun, gibt es eine Möglichkeit, Realm
abzufragen, um alle Item Records
zu finden, die einen der territoryID
an den Benutzer angeschlossen hat. Der Grund, warum ich in der Notwendigkeit dieser bin, ist, weil ich Rohr ein AutoCompleteTextView
einem Filteradapter, der wie folgt aussieht:Verwenden mehrerer unbekannter Anzahl von Bezeichnern zum Abfragen von RealmDB
public class ItemFilterAdapter extends BaseAdapter implements Filterable {
private static final String TAG = ItemFilterAdapter.class.getSimpleName();
private Context mContext;
private List<RealmItem> mResult = new ArrayList<>();
private LayoutInflater inflater;
private boolean needsFilter = false;
public ItemFilterAdapter(Context mContext) {
this.mContext = mContext;
}
public void setNeedsFilter(boolean needsFilter) {
this.needsFilter = needsFilter;
}
@Override
public int getCount() {
return mResult.size();
}
@Override
public Object getItem(int position) {
return mResult.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
if (inflater == null)
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (view == null)
view = inflater.inflate(R.layout.item_update_autocomplete, parent, false);
RealmItem item = mResult.get(position);
TextView updateName = (TextView) view.findViewById(R.id.update_name);
TextView updateAddress = (TextView) view.findViewById(R.id.update_address);
if (item != null) {
updateName.setText(item.getName());
try {
JSONObject obj = new JSONObject(item.getPayload());
String address = obj.getString("address");
updateAddress.setText(address);
} catch (Exception e) {
e.printStackTrace();
}
}
return view;
}
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
return null;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults filterResults) {
if (constraint != null) {
mResult = filterDealers(constraint.toString());
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
};
}
@NonNull
private List<RealmItem> filterDealers(String query) {
Realm mRealm = RealmUtils.getRealmInstance(mContext);
if (!needsFilter) {
return mRealm.where(RealmItem.class)
.contains("name", query, Case.INSENSITIVE)
.equalTo("id", [array of Ids]) <-- This is where I need it
.findAll();
} else {
return mRealm.where(RealmItem.class)
.contains("name", query, Case.INSENSITIVE)
.notEqualTo("activeStatus", "inactive")
.equalTo("id", [array of Ids]) <-- This is where I need it
.findAll();
}
}
}
Mehr wie die Suche nach so etwas wie dieses .equalTo("id", [array of Ids]) <-- This is where I need it
oder etwas schön zu machen Filterung seemlessly glatt
Ich liebe dich ..... –