我在某个项目中工作,我想将喜欢的图标设置为卡片视图,我想将cardview详细信息显示给另一个活动。我使用firebase for set cardview with recyclerview。
我是android的初学者。所以我想要一些帮助来解决这个问题。
当我点击收藏夹图标并将cardview详细信息设置到另一个回收站视图时,如何获取cardview的详细信息?!?!?!?!
viewHolder.mStarBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
mProccessStar = true;
mDatabaseStar.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (mProccessStar) {
if (dataSnapshot.child(post_key1).hasChild(mAuth1.getCurrentUser().getUid())) {
mDatabaseStar.child(post_key1).child(mAuth1.getCurrentUser().getUid()).removeValue();
mProccessStar = false;
} else {
mDatabaseStar.child(post_key1).child(mAuth1.getCurrentUser().getUid()).setValue(post_key1);
mProccessStar = false;
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
我想复制所有这个字符串并将其显示给另一个recyclerview,现在我将此字符串设置为带有cardview的recyclerview。 我不想获得密钥或获取id.i想获得标题字符串和字符串desc和图像字符串
KPhBVHz4cmukSY...
品名: “کیفدستدوز”
图像: “https://firebasestorage.google ...
标题:“کیفدستدوز”
答案 0 :(得分:0)
您可以在populateViewHolder中使用每个CardView执行操作。在这个例子中:
1)为vName和vMessage
设置文本(setText)2)使用getRef(i).getKey(),您可以获得卡中显示的数据的父键。
3)OnClickListener也可以设置在CardView中的东西中,或者甚至是CardView本身。
mRecyclerAdapter =
new FirebaseRecyclerAdapter<DataModel, ViewHolder>(
DataModel.class,
R.layout.item_list,
ViewHolder.class,
mDatabaseRef
) {
@Override
protected void populateViewHolder(final ViewHolder viewHolder, final DataModel student, int i) {
viewHolder.vName.setText(student.getName());
viewHolder.vMessage.setText(student.getMessage());
String itemId = getRef(i).getKey();
viewHolder.vCard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
aMethodThatDoesSomething();
}
});
DatabaseReference mFavourite= mRef.child("shortlisted_tutors").child(currentUID1).child(otherUserUID);
mFavourite.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot){
if (dataSnapshot.exists()) {
viewHolder.favoriteImageButton.setImageResource(R.mipmap.ic_bookmarkchecked);
}
else {
viewHolder.favoriteImageButton.setImageResource(R.mipmap.ic_shortlistbookmark);
}
}
}
};
mRecyclerView.setAdapter(mRecyclerAdapter);
mRecyclerView.setLayoutManager(manager);
有三点需要注意: 1)您必须在ViewHolder类中定义每个视图(TextView,ImageView等)。 2)为了能够从 addValueEventListener 中更改喜欢的ImageView / ImageButton,您必须在 populateViewHolder 中将ViewHolder声明为final 3)这里我只使用 dataSnapshot.exists(),但您也可以请求一个值并根据它进行更改。但是, dataSnapshot.exists()在大多数情况下更快,更有效。
答案 1 :(得分:0)
要复制节点,请执行以下操作:
mRefToCopy = mRef.child("original_data");
HashMap<String, Object> hashMapContainingCopy = new HashMaTp<>();
mSubmittedTutorFeedback.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
hashMapContainingCopy = (HashMap<String, Object>) dataSnapshot.getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
然后将其复制到新位置:
mNewLocation.setValue(hashMapContainingCopy, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference reference) {
if (databaseError != null) {
Log.e("tutor feedback write", "Failed to write message", databaseError.toException());
}
else {
mRefToCopy.removeValue(new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
}
最后一部分是如果要在副本成功发生时删除原始文件。如果这是您正在寻找的,请将此答案标记为正确。
答案 2 :(得分:0)
DatabaseReference newPost = mDatabaseStar.push();
newPost.child("title").setValue(model.getTitle());
newPost.child("desc").setValue(model.getDesc());
mDatabaseStar.child(post_key1).child(mAuth1.getCurrentUser()的getuid()。)的setValue(newPost);