从FirebaseListAdapter

时间:2016-10-04 08:54:50

标签: android firebase firebase-realtime-database firebaseui

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

在应用程序的一部分中,我使用FirebaseListAdapter将一些数据库条目填充到列表视图中。然后我在我的列表上实现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或其他任何内容。在第一个代码片段的toast中,我每次点击父引用时返回的都是testing字符串。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

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