Android中的Realm数组字符串

时间:2016-08-20 11:58:13

标签: realm android-database

我一直在尝试以编程方式在Realm数据库中存储一个字符串数组,如下所示:

模特课程:

  realm.executeTransactionAsync(new Realm.Transaction() {
  @Override
  public void execute(Realm realm) {
    Station station1 =     realm.createObject(Station.class)
    station1.setName(name1);
   Station station2 = realm.createObject(Station.class)
    station2.setName(name2);
  //goes on till station8000
   }
   }, new Realm.Transaction.OnSuccess() {
  @Override
  public void onSuccess() {
    // ...
 });

保存数据:

{{1}}

还有另一种最佳方法吗?

1 个答案:

答案 0 :(得分:0)

为什么当然有

public class Station extends RealmObject {
    private String name;

    // ... Generated getters and setters ...
}

// field variable
RealmResults<Station> stations;
// field variable
RealmChangeListener<RealmResults<Station>> changeListener = new RealmChangeListener<RealmResults<Station>>() {
    @Override
    public void onChange(RealmResults<Station> results) {
        // handle onSuccess()
    }
}

stations = realm.where(Station.class).findAll();
stations.addChangeListener(changeListener);

realm.executeTransactionAsync(new Realm.Transaction() {
   @Override
   public void execute(Realm realm) {
      Station station = new Station();
      for(String stationName : listOfStationNames) {
          station.setName(stationName);
          realm.insert(station);
      }
   }
});
编辑:看看这个性感的旋转器。

public class DropdownSpinnerAdapter
        extends BaseAdapter
        implements SpinnerAdapter {
    private static final String TAG = "DropdownSpinnerAdapter";

    private boolean isItemSelected;

    RealmResults<Station> content;

    public ResultDropdownSpinnerAdapter(RealmResults<Station> objects) {
        this.content = objects;
    }

    @Override
    public int getCount() {
        if(content == null || !content.isValid()) {
            return 1;
        }
        return content.size() + 1;
    }

    @Override
    public String getItem(int position) {
        if(position <= 0) {
            return "";
        }
        return content.get(position - 1);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public int findPosition(Station selectedItem) {
        for(int i = 0, s = content.size(); i < s; i++) {
            Station item = content.get(i);
            if(item.equals(selectedItem)) {
                return i + 1;
            }
        }
        return 0;
    }


    static class ViewHolder {
        TextView textView;
        ImageView imageView;

        public ViewHolder(View convertView) {
            textView = ButterKnife.findById(convertView, R.id.dropdown_textview);
            imageView = ButterKnife.findById(convertView, R.id.dropdown_arrow);
        }
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView != null) {
            if(!(convertView instanceof DropdownHeaderView)) {
                convertView = null;
            }
        }
        if(convertView == null) {
            convertView = LayoutInflater.from(parent.getContext())
                    .inflate((isItemSelected) ? R.layout.dropdown_selected : R.layout.dropdown,
                            parent,
                            false);
            ViewHolder viewHolder = new ViewHolder(convertView);
            convertView.setTag(viewHolder);
        }
        ViewHolder viewHolder = (ViewHolder) convertView.getTag();
        viewHolder.textView.setText(getItem(position).getName());
        return convertView;
    }

    public void setItemSelected(boolean selected) {
        this.isItemSelected = selected;
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        if(convertView != null) {
            if(!(convertView instanceof DropdownView)) {
                convertView = null;
            }
        }
        if(convertView == null) {
            convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.dropdown_noarrow, parent, false);
            ViewHolder viewHolder = new ViewHolder(convertView);
            convertView.setTag(viewHolder);
        }
        ViewHolder viewHolder = (ViewHolder) convertView.getTag();
        viewHolder.textView.setText(getItem(position).getName());
        return convertView;
    }

    public void updateContent(RealmResults<Station> content) {
        this.content = content;
        notifyDataSetChanged();
    }
}