如何在Android中向Firebase回收器视图添加按钮?
我想为Firebase回收器视图中的每个项目添加一个按钮。 我已经创建了按钮,它正在显示,当我按下它时,我收到了祝酒词。 但是-我怎样才能得到它列表上的相关项目 例如,当我按下“删除”键时,我想删除特定的任务“aspodm”。(对不起,图片太大了,我该怎么把它缩小?) 这就是数据库的外观(vfPvsk…是用户id,773f…是任务id的随机uuid): 这就是相关片段的代码。(点击按钮时,土司被激活-我只是不知道如何到达相关任务以删除它)如何在Android中向Firebase回收器视图添加按钮?,android,firebase,firebase-realtime-database,android-recyclerview,firebaseui,Android,Firebase,Firebase Realtime Database,Android Recyclerview,Firebaseui,我想为Firebase回收器视图中的每个项目添加一个按钮。 我已经创建了按钮,它正在显示,当我按下它时,我收到了祝酒词。 但是-我怎样才能得到它列表上的相关项目 例如,当我按下“删除”键时,我想删除特定的任务“aspodm”。(对不起,图片太大了,我该怎么把它缩小?) 这就是数据库的外观(vfPvsk…是用户id,773f…是任务id的随机uuid): 这就是相关片段的代码。(点击按钮时,土司被激活-我只是不知道如何到达相关任务以删除它) package com.airpal.yonatan
package com.airpal.yonatan.airpal;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.firebase.ui.database.FirebaseRecyclerAdapter;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.Query;
/**
*一个简单的{@link Fragment}子类。
*/
公共类PendingFragment_用户扩展了片段{
私有字符串TAG=“dDEBUG”;
私人回收站查看mPendingList;
私人数据库参考委员会;
私人消防队;
私有字符串mCurrent\u user\u id;
私人视图;
查询;
公共PendingFragment_用户(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
mMainView=充气机。充气(R.layout.fragment\u pending\u用户,容器,false);
mPendingList=(RecyclerView)mMainView.findViewById(R.id.pending\u recycler\u user);
mAuth=FirebaseAuth.getInstance();
mCurrent_user_id=mAuth.getCurrentUser().getUid();
mMissionsDb=FirebaseDatabase.getInstance().getReference().child(“任务”).child(mCurrent\u用户id);
querys=mMissionsDb.orderByChild(“状态”).equalTo(“可用”);
保持同步(正确);
mPendingList.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(getContext());
//为该碎片膨胀布局
返回视图;
}
@凌驾
public void onStart(){
super.onStart();
FirebaseRecyclerAdapter FirebaseCommissionUserRecyclerAdapter=新的FirebaseRecyclerAdapter(
任务类,
R.layout.missions\u single\u布局,
PendingFragment_User.MissionsViewHolder.class,
询问
) {
@凌驾
受保护的无效填充视图持有者(PendingFragment_User.missionViewHolder任务视图持有者任务视图持有者,最终任务任务模型,内部任务位置){
//Log.d(标记,“内部populateViewHolder”+missionModel.getType()+”,“+missionModel.getDescription());
setMissionName(missionModel.getType());
setMissionDescription(missionModel.getDescription());
setMissionStatus(missionModel.getStatus());
missionViewHolder.button.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//Toast.makeText(view.getContext(),“esto es un boton”+view.getNextFocusUpId(),Toast.LENGTH_SHORT).show();
Log.d(标记“按钮被按下”);
}
});
}
};
setAdapter(firebaseMissionsUserRecyclerAdapter);
}
公共静态类任务ViewHolder扩展了RecyclerView.ViewHolder{
视图视图;
按钮;
公共任务视图持有者(查看项目视图){
超级(项目视图);
mView=项目视图;
按钮=(按钮)mView.findviewbyd(R.id.pending\u single\u按钮);
}
public void setMissionName(字符串名称){
TextView-mMissionNameView=mView.findviewbyd(R.id.mission\u single\u name);
mMissionNameView.setText(名称);
}
public void setMissionStatus(字符串状态){
text查看任务状态视图=mView.findviewbyd(R.id.mission\u single\u status);
mMissionStatusView.setText(状态);
if(状态等于(“可用”)){
mMissionStatusView.setTextColor(Color.parseColor(#008000”);;
}否则{
mMissionStatusView.setTextColor(Color.parseColor(#FF0000”);;
}
}
public void setMissionDescription(字符串描述){
text查看任务描述视图=mView.findviewbyd(R.id.mission\u single\u description);
mMissionDescriptionView.setText(说明);
}
}
}
尝试使用子类而不是匿名子类。然后,您将能够访问适配器的getItem(int位置)
方法。大致如下:
private class MissionAdapter extends FirebaseRecyclerAdapter<Mission, PendingFragment_User.MissionsViewHolder> {
public MissionAdapter(Query queries){
super(Mission.class, R.layout.missions_single_layout, PendingFragment_User.MissionsViewHolder.class, queries);
}
@Override
protected void populateViewHolder(PendingFragment_User.MissionsViewHolder missionViewHolder, final Mission missionModel, final int missionPosition) {
Log.d(TAG, "inside populateViewHolder" + missionModel.getType() + " , " + missionModel.getDescription());
missionViewHolder.setMissionName(missionModel.getType());
missionViewHolder.setMissionDescription(missionModel.getDescription());
missionViewHolder.setMissionStatus(missionModel.getStatus());
missionViewHolder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Mission clickedMission = MissionAdapter.this.getItem(missionPosition);
if (clickedMission != null){ // for the sake of being extra-safe
Log.d(TAG,"The button was pressed for mission: " + clickedMission.getType());
}
}
});
}
}
私有类MissionAdapter扩展了FirebaseRecyclerAdapter{
公共任务适配器(查询){
super(Mission.class,R.layout.missions\u single\u layout,PendingFragment\u User.MissionsViewHolder.class,查询);
}
@凌驾
受保护的无效填充视图持有者(PendingFragment_User.missionViewHolder任务视图持有者任务视图持有者,最终任务任务模型,最终内部任务位置){
Log.d(标记,“内部populateViewHolder”+missionModel.getType()+”,“+missionModel.getDescription());
private class MissionAdapter extends FirebaseRecyclerAdapter<Mission, PendingFragment_User.MissionsViewHolder> {
public MissionAdapter(Query queries){
super(Mission.class, R.layout.missions_single_layout, PendingFragment_User.MissionsViewHolder.class, queries);
}
@Override
protected void populateViewHolder(PendingFragment_User.MissionsViewHolder missionViewHolder, final Mission missionModel, final int missionPosition) {
Log.d(TAG, "inside populateViewHolder" + missionModel.getType() + " , " + missionModel.getDescription());
missionViewHolder.setMissionName(missionModel.getType());
missionViewHolder.setMissionDescription(missionModel.getDescription());
missionViewHolder.setMissionStatus(missionModel.getStatus());
missionViewHolder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Mission clickedMission = MissionAdapter.this.getItem(missionPosition);
if (clickedMission != null){ // for the sake of being extra-safe
Log.d(TAG,"The button was pressed for mission: " + clickedMission.getType());
}
}
});
}
}