Java 更改RecycleView项目的状态

Java 更改RecycleView项目的状态,java,android,android-recyclerview,Java,Android,Android Recyclerview,我有请求选项卡,其中“已接收”在RecycleView中从BD Firebase检索数据。此请求由用户提出并由公司接收。现在,我如何执行以下操作: 1-公司代表单击传入请求的一项,以显示一个警报对话框,提示是否响应请求 2-如果您回答,请删除“已接收”项并显示在“已参加”中。如果没有,则显示在“待定”中 如果可能,还应将这些操作通知用户。多亏了帮助我的人 代码: 公共类SolicReceibidaFragment扩展片段{ 私人回收站查看回收站查看ACAO; 私有数据库参考REFACCAO,数据

我有请求选项卡,其中“已接收”在RecycleView中从BD Firebase检索数据。此请求由用户提出并由公司接收。现在,我如何执行以下操作:

1-公司代表单击传入请求的一项,以显示一个警报对话框,提示是否响应请求

2-如果您回答,请删除“已接收”项并显示在“已参加”中。如果没有,则显示在“待定”中

如果可能,还应将这些操作通知用户。多亏了帮助我的人

代码:

公共类SolicReceibidaFragment扩展片段{
私人回收站查看回收站查看ACAO;
私有数据库参考REFACCAO,数据库;
专用适配器集合体适配器;
private ArrayList listaSolicitacoes=new ArrayList();
私人价值事件监听者价值事件法律;
私有字符串idUsuario;
公共SolicReceibidaFragment(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u requestacao\u recebida,容器,假);
//配置incais
recyclerViewListaSolicitacao=view.findViewById(R.id.recyclerView\u ListaSolicitacao);
//配置参考nóde Receperação dos dados
//idUsuario=IDUSUARIFIRABASE.GetIdentificationCadorUsuario();
database=ConfiguracaoFirebase.getFirebaseDataBase();
refacao=数据库
.儿童(“科莱塔律师”);
//配置适配器
adapter=newadaptersolicitacoes(listaSolicitacoes,getActivity());
//Config.RecyclerView
RecyclerView.LayoutManager LayoutManager=新的LinearLayoutManager(getActivity());
RecyclerViewListaClarcao.setLayoutManager(layoutManager);
RecycleServiceWListaccao.setHasFixedSize(真);
RecycleServiceWListaLearcacao.addItemDecoration(新的DividerItemDecoration(getActivity(),LinearLayout.VERTICAL));
RecycleServiceWListaco.setAdapter(适配器);
//点击事件
RecyclerViewListaccao.AddonitTouchListener(
新建RecyclerItemClickListener(getActivity()、RecyclerServiceWListaLearchao、,
新建RecyclerItemClickListener.OnItemClickListener(){
@凌驾
公共虚线单击(视图,int位置){
Toast.makeText(getActivity(),“Item clicado”,
吐司。长度(短)。show();
}
@凌驾
public void onLongItemClick(视图,int位置){
Toast.makeText(getActivity(),“Item pressionado”,
吐司。长度(短)。show();
}
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
}
})
);
返回视图;
}
@覆盖//Exibi lista ao carregar o片段
public void onStart(){
super.onStart();
复发性结石();
}
@重写//删除lista ao sair do片段
公共void onStop(){
super.onStop();
RevoveEventListener(valueEventoSolicitacao)的参考请求;
}
再次发生公共无效合并(){
valueEventoSolicitacao=refrequirectacao.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
listaSolicitacoes.clear();
对于(DataSnapshot dados:DataSnapshot.getChildren()){
//Log.i(“DADOS COLETA FIREBASE”,dataSnapshot.getValue().toString());
DadosSolicitacao=dados.getValue(DadosSolicitacao.class);
添加(征求意见书);
}
adapter.notifyDataSetChanged();
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
}

yes可能为适配器使用自定义单击侦听器。数据更新时,firebase侦听器将自动触发。因此,您的
onDataChange
可以随时调用。您可以处理,因此我必须在请求片段attende中设置一个侦听器,以捕获收到的请求片段的单击更改?是的,当firebase中的数据更改时,您的firebase侦听器也将触发
    public class SolicRecebidaFragment extends Fragment {

private RecyclerView recyclerViewListaSolicitacao;
private DatabaseReference refSolicitacao, database ;
private AdapterSolicitacoes adapter;
private ArrayList<DadosSolicitacao> listaSolicitacoes = new ArrayList<>();
private ValueEventListener valueEventoSolicitacao;
private String idUsuario;


public SolicRecebidaFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view =  inflater.inflate(R.layout.fragment_solicitacao_recebida, container, false);

    //Config.Inciais
    recyclerViewListaSolicitacao = view.findViewById(R.id.recyclerView_ListaSolicitacao);

    //Config.Referenciar nó de recuperação dos dados
   // idUsuario = IdUsuarioFirabase.getIdentificadorUsuario();
    database = ConfiguracaoFirebase.getFirebaseDataBase();
    refSolicitacao = database
            .child("solicitacao_coleta");

    //Config.Adapter
    adapter = new AdapterSolicitacoes(listaSolicitacoes, getActivity());

    //Config.RecyclerView
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
    recyclerViewListaSolicitacao.setLayoutManager( layoutManager);
    recyclerViewListaSolicitacao.setHasFixedSize(true);
    recyclerViewListaSolicitacao.addItemDecoration( new DividerItemDecoration(getActivity(), LinearLayout.VERTICAL));
    recyclerViewListaSolicitacao.setAdapter( adapter );

    //Evento de click
    recyclerViewListaSolicitacao.addOnItemTouchListener(
            new RecyclerItemClickListener(getActivity(), recyclerViewListaSolicitacao,
                    new RecyclerItemClickListener.OnItemClickListener() {
                        @Override
                        public void onItemClick(View view, int position) {

                            Toast.makeText(getActivity(), "Item clicado",
                                    Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onLongItemClick(View view, int position) {

                            Toast.makeText(getActivity(), "Item pressionado",
                                    Toast.LENGTH_SHORT).show();

                        }

                        @Override
                        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                        }
                    })
    );

return view;
}

@Override //Exibi lista ao carregar o fragment
public void onStart() {
    super.onStart();
    recuperarSolicitacao();
}

@Override // Remove lista ao sair do fragment
public void onStop() {
    super.onStop();
    refSolicitacao.removeEventListener(valueEventoSolicitacao);
}

public void recuperarSolicitacao (){

   valueEventoSolicitacao =  refSolicitacao.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            listaSolicitacoes.clear();

            for ( DataSnapshot dados: dataSnapshot.getChildren() ){

               // Log.i("DADOS COLETA FIREBASE", dataSnapshot.getValue().toString());

                DadosSolicitacao solicitacao = dados.getValue(DadosSolicitacao.class);
                listaSolicitacoes.add( solicitacao );

            }

            adapter.notifyDataSetChanged();

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });


}

    }