我已经开始使用Realm DB,但在编译期间出现错误:“Setter set_text没有与任何字段关联”出现。出现这种错误的原因是什么?
package com.example.ahmed.drawer_implementation;
import io.realm.RealmObject;
/**
* Created by ahmed on 21-05-17.
*/
public class favoriteItems extends RealmObject {
private String fav_text;
private int fav_image;
favoriteItems(String x, int y){
fav_text=x;
fav_image=y;
}
public void setText(String t){
fav_text=t;
}
public void setImage(int t){
fav_image=t;
}
}
这是适配器类: package com.example.ahmed.drawer_implementation;
import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import io.realm.RealmResults;
import static com.example.ahmed.drawer_implementation.MainActivity.av;
import static com.example.ahmed.drawer_implementation.MainActivity.realm;
//import com.squareup.picasso.Picasso;
public class main_menu_adapter extends
RecyclerView.Adapter<main_menu_adapter.ViewHolder> {
public static ArrayList<main_menu_items>favorite_storage=new
ArrayList<main_menu_items>();
public main_menu_items item;
static int count=0;
private ArrayList<main_menu_items> arrayList;
private Context mcontext;
public main_menu_adapter(Context context, ArrayList<main_menu_items> menu) {
this.arrayList = menu;
this.mcontext = context;
}
@Override
public main_menu_adapter.ViewHolder onCreateViewHolder(ViewGroup parent, int
viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_menu_items, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(main_menu_adapter.ViewHolder holder, int position) {
holder.textView.setText(arrayList.get(position).getMenu_text());
holder.imageView.setImageResource(arrayList.get(position).getMenu_image());
/* for(int i=0;i<10;i++){
favorite_storage[i]=-1;
}
favorite_storage[count]=slot;
count++;*/
final int slot=position;
final SharedPreferences favorites=mcontext.getSharedPreferences("Favorites",Context.MODE_PRIVATE);
SharedPreferences.Editor mark=favorites.edit();
holder.fav.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(buttonView.isChecked()) {
favorite_storage.add(MainActivity.av.get(slot));
realm.beginTransaction();
favoriteItems item = realm.createObject(favoriteItems.class);
item.setText(av.get(slot).getMenu_text().trim());
item.setImage(av.get(slot).getMenu_image());
realm.commitTransaction();
//implement a while loop to iterate the array excluding index value -1's. This should be done for a separate activity
//Refer to the prepareData() function.
Toast.makeText(mcontext, "slot number: "+ slot, Toast.LENGTH_SHORT).show();
}
else{
realm.beginTransaction();
RealmResults<favoriteItems> items = realm.where(favoriteItems.class).equalTo("fav_text",av.get(slot).getMenu_text()).findAll();
if(!items.isEmpty()) {
for(int i = items.size() - 1; i >= 0; i--) {
items.get(i).removeFromRealm();
}
}
realm.commitTransaction();
Toast.makeText(mcontext,"slot number: "+slot+" removed",Toast.LENGTH_SHORT).show();
//favorite_storage[count]=-1;
}
}
});
}
@Override
public int getItemCount() {
return arrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
private CheckBox fav;
private ImageView imageView;
public ViewHolder(View v) {
super(v);
fav=(CheckBox) v.findViewById(R.id.favorite);
textView = (TextView) v.findViewById(R.id.menu_text);
imageView = (ImageView) v.findViewById(R.id.menu_image);
}
}
}