Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用改装2.0+;RxJava+;领域+;RecyclerView不将数据保存到数据库中_Java_Android_Realm_Rx Java_Retrofit2 - Fatal编程技术网

使用改装2.0+;RxJava+;领域+;RecyclerView不将数据保存到数据库中

使用改装2.0+;RxJava+;领域+;RecyclerView不将数据保存到数据库中,java,android,realm,rx-java,retrofit2,Java,Android,Realm,Rx Java,Retrofit2,我对android和第三方库还很陌生,所以我有一个问题。 我想将来自RESTAPI的一些数据存储到领域中,然后将其显示到RecyclerView中。我有三个标签使用相同的recyclerView,所以它可以显示三种不同的状态。 以下是我的课程: public class RealmContentAdapter extends RealmRecyclerViewAdapter<ContentDataModel, RealmContentAdapter.ViewHolder> { pri

我对android和第三方库还很陌生,所以我有一个问题。 我想将来自RESTAPI的一些数据存储到领域中,然后将其显示到RecyclerView中。我有三个标签使用相同的recyclerView,所以它可以显示三种不同的状态。 以下是我的课程:

public class RealmContentAdapter extends RealmRecyclerViewAdapter<ContentDataModel, RealmContentAdapter.ViewHolder> {
private Context mContext;


public static class ViewHolder extends RecyclerView.ViewHolder{
    private ImageView cardIcon;
    private TextView likeCounter, cardHeader, cardAddress, cardDate, cardDays;

    public ViewHolder(View itemView) {
        super(itemView);
        this.cardIcon = (ImageView) itemView.findViewById(R.id.card_icon);
        this.likeCounter = (TextView) itemView.findViewById(R.id.like_counter);
        this.cardHeader = (TextView) itemView.findViewById(R.id.card_header_text);
        this.cardAddress = (TextView) itemView.findViewById(R.id.card_address_text);
        this.cardDate = (TextView) itemView.findViewById(R.id.card_date_text);
        this.cardDays = (TextView) itemView.findViewById(R.id.card_days_text);
    }
}

public RealmContentAdapter (Context context, OrderedRealmCollection<ContentDataModel> data){
    super(context, data, true);
    mContext = context;

}



@Override
public RealmContentAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.card_item, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(RealmContentAdapter.ViewHolder holder, int position) {
    ContentDataModel model = getData().get(position);
    holder.likeCounter.setText(String.valueOf(model.getLikesCounter()));
    holder.cardHeader.setText(model.getTitle());
    holder.cardIcon.setImageResource(R.drawable.nature);
    if (model.getGeoAddress() != null){
        holder.cardAddress.setText(model.getGeoAddress().getAddress());
    } else {
        holder.cardAddress.setText("");
    }

    holder.cardDate.setText(model.getNormalDate());
    holder.cardDays.setText(String.valueOf(model.getDays()));

}


public class ContentDataModel extends RealmObject {

@SerializedName("id")
@Expose
private int id;
@SerializedName("user")
@Expose
private User user;
@SerializedName("geo_address")
@Expose
private GeoAddress geoAddress;
@SerializedName("category")
@Expose
private Category category;
@SerializedName("type")
@Expose
private Type type;
@SerializedName("title")
@Expose
private String title;
@SerializedName("body")
@Expose
private String body;
@SerializedName("created_date")
@Expose
private int createdDate;
@SerializedName("start_date")
@Expose
private int startDate;
@SerializedName("state")
@Expose
private State state;
@SerializedName("ticket_id")
@Expose
private String ticketId;
@SerializedName("files")
@Expose
@Ignore
private List<Files> files = new ArrayList<>();
@SerializedName("performers")
@Expose
@Ignore
private List<Performer> performers = new ArrayList<>();
@SerializedName("deadline")
@Expose
private int deadline;
@SerializedName("likes_counter")
@Expose
private int likesCounter;


public int getId() {
    return id;
}


public void setId(int id) {
    this.id = id;
}


public User getUser() {
    return user;
}


public void setUser(User user) {
    this.user = user;
}


public GeoAddress getGeoAddress() {
    return geoAddress;
}


public void setGeoAddress(GeoAddress geoAddress) {
    this.geoAddress = geoAddress;
}


public Category getCategory() {
    return category;
}


public void setCategory(Category category) {
    this.category = category;
}


public Type getType() {
    return type;
}


public void setType(Type type) {
    this.type = type;
}


public String getTitle() {
    return title;
}


public void setTitle(String title) {
    this.title = title;
}


public String getBody() {
    return body;
}


public void setBody(String body) {
    this.body = body;
}


public int getCreatedDate() {
    return createdDate;
}


public void setCreatedDate(int createdDate) {
    this.createdDate = createdDate;
}


public int getStartDate() {
    return startDate;
}


public void setStartDate(int startDate) {
    this.startDate = startDate;
}


public State getState() {
    return state;
}


public void setState(State state) {
    this.state = state;
}


public String getTicketId() {
    return ticketId;
}


public void setTicketId(String ticketId) {
    this.ticketId = ticketId;
}


public List<Files> getFiles() {
    return files;
}


public void setFiles(List<Files> files) {
    this.files = files;
}


public List<Performer> getPerformers() {
    return performers;
}


public void setPerformers(List<Performer> performers) {
    this.performers = performers;
}


public int getDeadline() {
    return deadline;
}


public void setDeadline(int deadline) {
    this.deadline = deadline;
}


public int getLikesCounter() {
    return likesCounter;
}


public void setLikesCounter(int likesCounter) {
    this.likesCounter = likesCounter;
}

public String getNormalDate(){
    return DateFormatter.getNormalDate(getStartDate());
}

public String getDays(){
    return DateFormatter.getGoneDays(getStartDate());
}
公共类RealmContentAdapter扩展RealmRecyclServiceAdapter{
私有上下文;
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
私家ImageView cardIcon;
私人文本视图,如计数器、卡头、卡地址、卡日期、卡天数;
公共视图持有者(视图项视图){
超级(项目视图);
this.cardIcon=(ImageView)itemView.findViewById(R.id.card_图标);
this.likeCounter=(TextView)itemView.findViewById(R.id.like_计数器);
this.cardHeader=(TextView)itemView.findViewById(R.id.card\u header\u text);
this.carddress=(TextView)itemView.findViewById(R.id.card\u address\u text);
this.cardDate=(TextView)itemView.findViewById(R.id.card\u date\u text);
this.cardDays=(TextView)itemView.findViewById(R.id.card\u days\u text);
}
}
公共RealmContentAdapter(上下文上下文、OrderedRealmCollection数据){
super(上下文、数据、true);
mContext=上下文;
}
@凌驾
public RealmContentAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.card_项目,父项,假);
返回新的ViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(RealmContentAdapter.ViewHolder,int位置){
ContentDataModel model=getData().get(位置);
holder.likeCounter.setText(String.valueOf(model.getlikecounter());
holder.cardHeader.setText(model.getTitle());
cardIcon.setImageResource支架(R.drawable.nature);
if(model.getGeoAddress()!=null){
holder.carddress.setText(model.getGeoAddress().getAddress());
}否则{
持有者.carddress.setText(“”);
}
holder.cardDate.setText(model.getNormalDate());
holder.cardDays.setText(String.valueOf(model.getDays());
}
公共类ContentDataModel扩展了RealmObject{
@序列化名称(“id”)
@暴露
私有int-id;
@SerializedName(“用户”)
@暴露
私人用户;
@序列化名称(“地理地址”)
@暴露
专用地址;
@序列化名称(“类别”)
@暴露
私人类别;
@序列化名称(“类型”)
@暴露
私有类型;
@序列化名称(“标题”)
@暴露
私有字符串标题;
@序列化名称(“正文”)
@暴露
私有字符串体;
@SerializedName(“创建日期”)
@暴露
私有int-createdDate;
@SerializedName(“开始日期”)
@暴露
私人国际标准日期;
@序列化名称(“状态”)
@暴露
私营国家;
@序列化名称(“票证id”)
@暴露
私人字符串ticketId;
@序列化名称(“文件”)
@暴露
@忽略
私有列表文件=新的ArrayList();
@序列化名称(“表演者”)
@暴露
@忽略
private List performers=new ArrayList();
@序列化名称(“截止日期”)
@暴露
私营机构的最后期限;
@序列化名称(“喜欢的计数器”)
@暴露
私用int-likesCounter;
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共用户getUser(){
返回用户;
}
公共void setUser(用户){
this.user=用户;
}
公共地理地址getGeoAddress(){
返回地理地址;
}
public void setGeoAddress(GeoAddress GeoAddress){
this.geoAddress=geoAddress;
}
公共类别getCategory(){
退货类别;
}
公共无效集合类别(类别){
this.category=类别;
}
公共类型getType(){
返回类型;
}
公共void集合类型(类型){
this.type=type;
}
公共字符串getTitle(){
返回标题;
}
公共无效集合标题(字符串标题){
this.title=标题;
}
公共字符串getBody(){
返回体;
}
公共体(字符串体){
这个身体=身体;
}
public int getCreatedDate(){
返回createdDate;
}
公共void setCreatedDate(int createdDate){
this.createdDate=createdDate;
}
public int getStartDate(){
返回起始日期;
}
公共无效设置开始日期(int startDate){
this.startDate=startDate;
}
公共状态getState(){
返回状态;
}
公共无效设置状态(状态){
this.state=状态;
}
公共字符串getTicketId(){
返回TID;
}
公共void setTicketId(字符串ticketId){
this.ticketId=ticketId;
}
公共列表getFiles(){
归还文件;
}
公共无效设置文件(列出文件){
this.files=文件;
}
公共列表getPerformers(){
返回表演者;
}
公共执行者(列出执行者){
这个。表演者=表演者;
}
public int getDeadline(){
归还期限;
}
公共无效设置截止日期(整数截止日期){
this.deadline=截止日期;
}
public int getlikesconter(){
返回式计数器;
}
公共无效setLikeCounter(int-LikeCounter){
this.likesconter=likesconter;
}
公共字符串getNormalDate(){
return DateFormatter.getNormalDate(getStartDate());
}
公共字符串getDays(){
return DateFormatter.getGoneDays(getStartDate());
}
我还有一些其他的pojo课程,但这是主要的。 我的回收碎片:

public class RecyclerFragment extends Fragment {
private static final String KEY_FILE = "file";
private RealmContentAdapter mAdapter;
private RealmResults<ContentDataModel> mData;
private RecyclerView mRecyclerView;
private Realm mRealm;

public static Fragment newInstance(String file) {
    RecyclerFragment fragment = new RecyclerFragment();
    Bundle args = new Bundle();
    args.putString(KEY_FILE, file);
    fragment.setArguments(args);
    return fragment;
}

public String getPage() {
    return (getArguments().getString(KEY_FILE));
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.recycler_fragment_layout, container, false);
    mIntent = new Intent(getContext(), CardActivity.class);

    mRealm = Realm.getDefaultInstance();
    mData = mRealm.where(ContentDataModel.class).findAll();

    ApiService apiService = ApiModule.getApiService();
    Observable<List<ContentDataModel>> tabOneContent = apiService.loadCards(
            getString(R.string.processing_state), 10);
    Observable<List<ContentDataModel>> tabTwoContent = apiService.loadCards(
            getString(R.string.done_state), 10);
    Observable<List<ContentDataModel>> tabThreeContent = apiService.loadCards(
            getString(R.string.pending_state), 10);

    mRecyclerView = (RecyclerView) view.findViewById(R.id.tab_recycler);
    mRecyclerView.setHasFixedSize(true);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity(),
            LinearLayoutManager.VERTICAL, false);
    mRecyclerView.setLayoutManager(layoutManager);
    mAdapter = new RealmContentAdapter(getContext(), mData);
    mRecyclerView.setAdapter(mAdapter);

    if (getPage().equals(getString(R.string.processing_flag))) {
       tabOneContent
               .subscribeOn(Schedulers.io())
               .observeOn(AndroidSchedulers.mainThread())
               .subscribe(new Subscriber<List<ContentDataModel>>() {
                   @Override
                   public void onCompleted() {

                   }

                   @Override
                   public void onError(Throwable e) {

                   }

                   @Override
                   public void onNext(List<ContentDataModel> dataSet) {
                       Realm realm = Realm.getDefaultInstance();
                       realm.beginTransaction();
                       realm.copyToRealm(dataSet);
                       realm.commitTransaction();
                       realm.close();
                   }
               });
    } else if (getPage().equals(getString(R.string.done_flag))) {
        tabTwoContent
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<List<ContentDataModel>>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(List<ContentDataModel> dataSet) {
                        Realm realm = Realm.getDefaultInstance();
                        realm.beginTransaction();
                        realm.copyToRealm(dataSet);
                        realm.commitTransaction();
                        realm.close();
                    }
                });
    } else if (getPage().equals(getString(R.string.pending_flag))) {
        tabThreeContent
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<List<ContentDataModel>>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(List<ContentDataModel> dataSet) {
                        Realm realm = Realm.getDefaultInstance();
                        realm.beginTransaction();
                        realm.copyToRealm(dataSet);
                        realm.commitTransaction();
                        realm.close();
                    }
                });
    }


    return view;
}
公共类RecyclerFragment扩展了片段{
私有静态最终字符串KEY_FILE=“FILE”;
私有实体内容适配器mAdapter;
私有RealmResults mData;
私人回收视图mRecyclerView;
私人领域;
公共静态片段newInstance(字符串文件){
RecyclerFragment片段=新的RecyclerFragment();
Bundle args=新Bundle();
args.putString(KEY_文件,FILE);
fragment.setArguments(args);
返回片段;
}
公共字符串getPage(){
返回(getArguments().getString(KEY_文件));
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.recycler\u fragment\u布局,容器,false);
minent=新意图(getContext)