Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中向Firebase回收器视图添加按钮?_Android_Firebase_Firebase Realtime Database_Android Recyclerview_Firebaseui - Fatal编程技术网

如何在Android中向Firebase回收器视图添加按钮?

如何在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

我想为Firebase回收器视图中的每个项目添加一个按钮。 我已经创建了按钮,它正在显示,当我按下它时,我收到了祝酒词。 但是-我怎样才能得到它列表上的相关项目

例如,当我按下“删除”键时,我想删除特定的任务“aspodm”。(对不起,图片太大了,我该怎么把它缩小?)

这就是数据库的外观(vfPvsk…是用户id,773f…是任务id的随机uuid):

这就是相关片段的代码。(点击按钮时,土司被激活-我只是不知道如何到达相关任务以删除它)

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());
                }
            }
        });
    }
}