【问题标题】:Retrieving the Firebase key from onItemClick in FirebaseListAdapter从 FirebaseListAdapter 中的 onItemClick 检索 Firebase 密钥
【发布时间】:2017-02-12 08:52:55
【问题描述】:

我有一个 Firebase 数据库,我正在使用 push() 方法向数据库添加条目,从而生成随机密钥作为每个条目的参考。

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

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

        }
    });

在此处处理推送:

 mDatabase.child("testing").push().setValue(newBike);

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 或任何可能的值。在第一个代码 sn-p 的 toast 中,我返回的只是每次单击父引用中的 testing 字符串。

任何帮助表示赞赏。

【问题讨论】:

    标签: android firebase firebase-realtime-database firebaseui


    【解决方案1】:

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

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

    【讨论】:

    • 我正在使用自定义的arraylist适配器,我应该怎么做才能实现与上面相同的效果??
    • 嗨,我使用了上面的代码,但我收到了这个错误Variable 'adapter' is accessed from within inner class, needs to be declared final,但是当我将适配器设置为final时,我收到了错误error: incompatible types: String cannot be converted to DatabaseReference
    • 很好,正确的方法是getRef。我更新了答案中的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    相关资源
    最近更新 更多