Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 从FirebaseListAdapter中的onItemClick检索Firebase密钥_Android_Firebase_Firebase Realtime Database_Firebaseui - Fatal编程技术网

Android 从FirebaseListAdapter中的onItemClick检索Firebase密钥

Android 从FirebaseListAdapter中的onItemClick检索Firebase密钥,android,firebase,firebase-realtime-database,firebaseui,Android,Firebase,Firebase Realtime Database,Firebaseui,我有一个Firebase DB,我正在使用push()方法将条目添加到DB中,从而生成随机键作为每个条目的引用 在应用程序的一部分中,我使用FirebaseListAdapter将一些DB条目填充到列表视图中。然后我在我的列表中实现setonicmclicklistener。我想在这里做的是返回我单击的每个条目的引用 //Firebase DB setup mDatabaseStolen = FirebaseDatabase.getInstance().getRefe

我有一个Firebase DB,我正在使用
push()
方法将条目添加到DB中,从而生成随机键作为每个条目的引用

在应用程序的一部分中,我使用FirebaseListAdapter将一些DB条目填充到列表视图中。然后我在我的列表中实现
setonicmclicklistener
。我想在这里做的是返回我单击的每个条目的引用

    //Firebase DB setup
    mDatabaseStolen =       FirebaseDatabase.getInstance().getReference().child(testing);

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

            DatabaseReference itemRef = mDatabaseStolen.getRef();

            Toast toast = Toast.makeText(getActivity().getApplicationContext(), itemRef.getKey(), Toast.LENGTH_SHORT);
            toast.show();

        }
    });
Firebase数据:

"testing" : {  
 "-KTA7xijNrK1SK98rZns" : {     
  "color" : "Rjfu",      
  "frameSize" : 0,         
  "make" : "Ggg",     
  "other" : "Xhfhf",     
  "stolen" : false
},

"-KTABiJuH2-RXwmp0Rcu" : {   
"color" : "Red",     
"frameSize" : 0,      
"make" : "Test ",      
"other" : "No",      
"stolen" : false
}
因此,当我单击列表中的项目时,我希望返回引用
KTA7xijNrK1SK98rZns
或其他任何内容。在第一个代码片段中的toast中,我返回的是每次单击父引用时的
testing
字符串


感谢您的帮助。

您说您有一个
FirebaseListAdapter
。如果是这种情况,您可以使用
adapter.getRef()
在某个位置获取对特定项的引用

myListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
DatabaseReference itemRef=适配器.getRef(位置);
Toast Toast=Toast.makeText(getActivity().getApplicationContext(),itemRef.getKey(),Toast.LENGTH\u SHORT);
toast.show();
}
});

您说您有一个
FirebaseListAdapter
。如果是这种情况,您可以使用
adapter.getRef()
在某个位置获取对特定项的引用

myListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
DatabaseReference itemRef=适配器.getRef(位置);
Toast Toast=Toast.makeText(getActivity().getApplicationContext(),itemRef.getKey(),Toast.LENGTH\u SHORT);
toast.show();
}
});

我正在使用自定义arraylist适配器,我应该怎么做才能实现与上述相同的效果?您好,我使用了上述代码,但出现了此错误
变量“adapter”是从内部类中访问的,需要声明为final
但当我将适配器设置为final时,我得到了一个错误
错误:不兼容的类型:字符串无法转换为数据库引用
良好捕获,正确的方法是。我更新了答案中的代码。我正在使用自定义arraylist适配器,我应该怎么做才能实现与上面相同的效果?您好,我使用了上面的代码,但是我得到了这个错误
变量“adapter”是从内部类中访问的,需要声明为final
但当我将适配器设置为final时,我得到了一个错误
错误:不兼容的类型:字符串无法转换为数据库引用
良好捕获,正确的方法是。我更新了答案中的代码。
"testing" : {  
 "-KTA7xijNrK1SK98rZns" : {     
  "color" : "Rjfu",      
  "frameSize" : 0,         
  "make" : "Ggg",     
  "other" : "Xhfhf",     
  "stolen" : false
},

"-KTABiJuH2-RXwmp0Rcu" : {   
"color" : "Red",     
"frameSize" : 0,      
"make" : "Test ",      
"other" : "No",      
"stolen" : false
}
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        DatabaseReference itemRef = adapter.getRef(position);

        Toast toast = Toast.makeText(getActivity().getApplicationContext(), itemRef.getKey(), Toast.LENGTH_SHORT);
        toast.show();
    }
});