首页 > 解决方案 > 从 listView Firebase 中删除项目

问题描述

当我打开“Eventos”视图时遇到这个问题,我试图从数据库中删除列表视图中的选定项目。

在此处输入图像描述

公共类 ShowData 扩展 AppCompatActivity {

DatabaseReference databaseReference;
ListView listView;
ArrayList<String> arrayList = new ArrayList<>();
ArrayAdapter<String> arrayAdapter;
Button btnDelete;
Module module;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_data);
    databaseReference = FirebaseDatabase.getInstance().getReference("Eventos");
    listView = (ListView) findViewById(R.id.listViewShow);
    btnDelete = (Button) findViewById(R.id.btnBorrarElemento);
    module=((Module)getApplication());
    arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayList);
    listView.setAdapter(arrayAdapter); .....


... listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> paramAdapterView, View view, int position, long id) {
            module.setGvalue_titulo(arrayList.get(position));
            module.setGvalue_descripcion(arrayList.get(position));
            module.setGvalue_fecha(arrayList.get(position));
            module.setGvalue_url(arrayList.get(position));
        }
    });


    btnDelete.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            final String str = module.getGvalue_titulo().substring(0, 6);
            if(str == ""){
                Toast.makeText(ShowData.this, "No se ha seleccionado ningun elemento para eliminar", Toast.LENGTH_SHORT).show();
            }
            else {
                databaseReference.child("Eventos").child(str).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        databaseReference.child(str).removeValue();
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });
                Toast.makeText(ShowData.this, "Evento Eliminado", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(getApplicationContext(),ShowData.class);
                startActivity(intent);
            }
        }
    }); ....

该模块具有 getter 和 setter 必需品: 在此处输入图像描述

在我的清单中,我有这个:

在此处输入图像描述

标签: javaandroidfirebase

解决方案


您的问题是您正在尝试将您的Application转换为Module,但事实并非如此Module。那么,您是否已将您的Module自定义应用程序实现注册为您的AndroidManifest.xml?如果答案是“不”,那么这就是确切的原因!按照这个答案检查如何轻松完成。


推荐阅读