如何在Android的Realm中设置唯一主键?Realm文档说我不能使用String或int / long以外的任何东西,所以UUID类型也是不可能的吗?如果我有同名物品怎么办?
例如
public class GroceryItem extends RealmObject {
@PrimaryKey
private long id; <--- how can I make this unique without UUID?
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }
Run Code Online (Sandbox Code Playgroud) 为什么NullPointerException我ViewHolder的bindItems()方法中会出现 a ?
我已经突出显示了我获得NullPointerException. 该blogpost_authorID存在,因为你可以在XML中看到的,所以这里有什么问题吗?findViewById<TextView>(R.id.blogpost_author)返回空值如何?
Adapter和ViewHolder代码:
class BlogPostAdapter(val blogList: ArrayList<BlogPost>) : RecyclerView.Adapter<BlogPostAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) : BlogPostAdapter.ViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.blog_post_list, parent, false)
return ViewHolder(v)
}
override fun getItemCount(): Int {
return blogList.size
}
override fun onBindViewHolder(holder: BlogPostAdapter.ViewHolder, position: Int) {
holder.bindItems(blogList[position])
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindItems(blogPost: BlogPost) {
val blogPostAuthor = itemView.findViewById<TextView>(R.id.blogpost_author) // THIS LINE …Run Code Online (Sandbox Code Playgroud) 当用户单击它时,我试图从我的 RecyclerView 中删除它。但是,即使适配器中的删除方法是公共的,当我尝试从 MyViewHolder 中的 onClick 调用“删除”方法时,我也会收到错误“无法解析方法删除(int)”。
是什么赋予了?它是公开的,为什么我不能调用它?
杂货适配器
public class GroceryItemAdapter extends RecyclerView.Adapter<MyViewHolder> {
private LayoutInflater inflater;
private Context context;
List<MetaData> data = Collections.emptyList();
public GroceryItemAdapter(Context context, List<MetaData> data) {
this.context = context;
inflater = LayoutInflater.from(context);
this.data = data;
}
public void delete(int position) {
data.remove(position);
notifyItemRemoved(position);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.grocery_item_row, parent, false);
MyViewHolder holder = new MyViewHolder(view);
Log.i("GroceryHero", "onCreateViewHolder called");
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int …Run Code Online (Sandbox Code Playgroud)