如何在回收站视图中更新firebase数据?

时间:2018-02-01 08:41:48

标签: android firebase firebase-realtime-database android-recyclerview

以下是代码,

public SearchViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.Name);
phone = (TextView) itemView.findViewById(R.id.Phone);
status = (TextView) itemView.findViewById(R.id.Status);
checkBox = (CheckBox) itemView.findViewById(R.id.checkBox);


checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                if (isChecked) {
                    //update status value yes
                } else {
                   //update status value no
                }
            }
        });
    }



public SearchAdapter(Context context, ArrayList<String> NameList, ArrayList<String> PhoneList, ArrayList<String>StatusList ) {
    this.context = context;
    this.NameList = NameList;
    this.PhoneList = PhoneList;
    this.StatusList = StatusList;
}


@Override
public SearchAdapter.SearchViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.list_layout, parent, false);
    return new SearchAdapter.SearchViewHolder(view);
}

@Override
public void onBindViewHolder(SearchViewHolder holder, int position) {
    holder.Name.setText(studentNameList.get(position));
    holder.Phone.setText(studentPhoneList.get(position));
    holder.Status.setText(studentConList.get(position));
}

我将firebase数据检索到recyclerview,其中包含每个项目的名称,电话和状态以及复选框。如何在复选框检查时更新状态值,它会将firebase中的值更新为是,否则取消选中show value no?我必须使用NotifyDataSetChange方法吗?

我的数据库看起来像这样

"users": {
  "1": {
    "name": "abc"
    "phone": "0123"
    "status": "No"
  },
  "2": {
    "name": "def"
    "phone": "0456"
    "status": "No"
  },
},

1 个答案:

答案 0 :(得分:0)

您可以在bindview持有人内部使用更新代码。

@Override
public void onBindViewHolder(Firebase_Image_adapter.ViewHolder holder, final int position) {
    Log.d(TAG, "onBindViewHolder: called.");

    RequestOptions requestOptions = new RequestOptions()
            .placeholder(R.drawable.ic_launcher_background);

    Glide.with(mContext)
            .load(image.get(position).getImage_url())
            .apply(requestOptions)
            .into(holder.image);

    holder.name.setText(image.get(position).getImage_description());

    holder.image.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d(TAG, "onClick: clicked on: " + image.get(position).getImage_description());
            Toast.makeText(mContext, image.get(position).getImage_description(), Toast.LENGTH_SHORT).show();
        }
    });
    holder.count.setText(image.get(position).getImage_count()+"+");
    holder.likeButton.setOnLikeListener(new OnLikeListener() {
        @Override
        public void liked(LikeButton likeButton) {
            final DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("Image_Array").child(image.get(position).getId()).child("love_count");
            mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    //Image totalLikes = dataSnapshot.getValue(Image.class);
                    String totalLikes = dataSnapshot.getValue(String.class);
                    int n=Integer.parseInt(totalLikes)+1;
                    //Image totalLikes =(Image) dataSnapshot.getValue();
                    mDatabase.setValue(n+"");
                    Log.d(TAG,n+"");
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }

        @Override
        public void unLiked(LikeButton likeButton) {

        }
    });

}