Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Java 如何使用setOnItemClickListener将listview中列出的firebase id传递给另一个活动?_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 如何使用setOnItemClickListener将listview中列出的firebase id传递给另一个活动?

Java 如何使用setOnItemClickListener将listview中列出的firebase id传递给另一个活动?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,目前我有一个ListView,它显示存储在Firebase中的数据 我尝试发送每个存储对象的ID,但我的“putExtra”只发送可见数据,即名称(通过在pojo类中创建一个返回名称的toString方法,我确定这是可见数据) Pojo: 现在我将展示这两个函数 ListData从firebase收集数据,并使用arrayadapter将其存储在listview中 private void listarDatos() { databaseReference.child("par

目前我有一个ListView,它显示存储在Firebase中的数据

我尝试发送每个存储对象的ID,但我的“putExtra”只发送可见数据,即名称(通过在pojo类中创建一个返回名称的toString方法,我确定这是可见数据)

Pojo:

现在我将展示这两个函数

ListData从firebase收集数据,并使用arrayadapter将其存储在listview中

private void listarDatos() {
    databaseReference.child("parcelas").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            listaParcelas.clear();
            for(DataSnapshot objSnaptshot : dataSnapshot.getChildren()){
                Parcela p = objSnaptshot.getValue(Parcela.class);
                listaParcelas.add(p);
            }
            arrayAdapterParcela = new ArrayAdapter<Parcela>(listaParcelas.this, android.R.layout.simple_list_item_1,listaParcelas);
            listvListaParcela.setAdapter(arrayAdapterParcela);

        }
        @Override
        public void onCancelled(@NonNull DatabaseError error) {
        }
    });
    listvListaParcela.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int i, long l) {

            Intent intentEditar = new Intent(listaParcelas.this,editarParcela.class);

       
 intentEditar.putExtra("idParcelaModificable",listvListaParcela.getItemAtPosition(i).toString());
            startActivity(intentEditar);
        }
    });
}
private void listarDatos(){
databaseReference.child(“parcelas”).addValueEventListener(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
listaParcelas.clear();
对于(DataSnapshot objSnaptshot:DataSnapshot.getChildren()){
Parcela p=objSnaptshot.getValue(Parcela.class);
添加(p);
}
arrayAdapterParcela=新的ArrayAdapter(listaParcelas.this,android.R.layout.simple\u list\u item\u 1,listaParcelas);
ListVlistParcela.setAdapter(arrayAdapterParcela);
}
@凌驾
已取消公共void(@NonNull DatabaseError){
}
});
ListVlistParcela.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图视图、int i、long l){
Intent intentEditar=新的Intent(listaParcelas.this,editarParcela.class);
intentEditar.putExtra(“IDParcelaModifiable”,ListVlistParcela.getItemAtPosition(i.toString());
星触觉(意向性);
}
});
}

在发送intentEditar.putExtra时,只发送数据名,并忘记它包含的所有存储但不可见的数据(我知道数据在那里,因为在调试器中可以观察到它)

我终于成功了,我从arrayadapter中提取了对象

之后,我使用pojo中的get提取id,并将其发送到intent

在我的情况下,我可以发送整个对象,也可以只发送id,无论我喜欢哪个

    listvListaParcela.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int i, long l) {

            Parcela DatosParcelaClick = arrayAdapterParcela.getItem(i);

            String IdParcelaString = DatosParcelaClick.getIdParcela().toString();


            Intent intentEditar = new Intent(listaParcelas.this,editarParcela.class);
            //2 options
            intentEditar.putExtra("IdParcelaClick",IdParcelaString);
            intentEditar.putExtra("objetoParcelaClick",DatosParcelaClick);
            startActivity(intentEditar);
        }
    });
}
listVlistParcela.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图视图、int i、long l){
Parcela DatosParcelaClick=arrayAdapterParcela.getItem(i);
字符串IdParcelaString=DatosParcelaClick.getIdParcela().toString();
Intent intentEditar=新的Intent(listaParcelas.this,editarParcela.class);
//2个选项
intentEditar.putExtra(“IdParcelaClick”,IdParcelaString);
intentEditar.putExtra(“objetoParcelaClick”,DatosParcelaClick);
星触觉(意向性);
}
});
}

您是否尝试在toString方法中添加更多字段?除此之外,您是否尝试过从for循环中创建适配器?我真的不想向toString添加更多信息,因为它将显示在布局中,这是我不想要的。对不起,我没有正确理解的第二个问题是,在for循环的每次迭代中,您都在创建ArrayAdapter类的新实例,这是不正确的。你可以退房。我认为这会有帮助。此外,除了在其他活动中你还期待什么?您只向其他活动发送了
nombreParcela
。实际上,ArrayAdapter位于错误的位置。我已经将它们放在for之后,但是我仍然不知道如何准确地拯救数据,检查调试,我不确定它们是否正确显示,是否有任何方法可以使用toString并发送id,而不在布局中看到它?
    listvListaParcela.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int i, long l) {

            Parcela DatosParcelaClick = arrayAdapterParcela.getItem(i);

            String IdParcelaString = DatosParcelaClick.getIdParcela().toString();


            Intent intentEditar = new Intent(listaParcelas.this,editarParcela.class);
            //2 options
            intentEditar.putExtra("IdParcelaClick",IdParcelaString);
            intentEditar.putExtra("objetoParcelaClick",DatosParcelaClick);
            startActivity(intentEditar);
        }
    });
}