FirebaseUI - 不兼容的类型:String 无法转换为 DatabaseReference

FirebaseUI - Incompatible types: String cannot be converted to DatabaseReference

我在 onItemClick 中获取 Firebase 数据库密钥时遇到 Incompatible types: String cannot be converted to DatabaseReference 错误。

我用来从 Firebase 数据库填充 ListView 的代码

mListView = (ListView) rootView.findViewById(R.id.listview1);
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://my-project.firebaseio.com/name/data");
FirebaseListAdapter<Personnel> adapter = new FirebaseListAdapter<Personnel>(getActivity(),Personnel.class,R.layout.layout_items,databaseReference) {
    @Override
    protected void populateView(View v, Personnel model, int position) {
        TextView textView = (TextView) v.findViewById(R.id.tv_title);
        textView.setText(model.name);
    }
};
mListView.setAdapter(adapter);

ListView 的 onItemClick(修改自

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        DatabaseReference itemRef = adapter.getItem(position);
        Toast toast = Toast.makeText(getActivity().getApplicationContext(), itemRef.getKey(), Toast.LENGTH_SHORT);
        toast.show();
    }
});

首先,我在 onItemClick 下的 adapter.getItem(position); 中的 adapter 上遇到了 Variable 'adapter' is accessed from within inner class, needs to be declared final 错误

所以我在 final FirebaseListAdapter<Personnel> adapter... 添加了 final 然后出现了这个错误

我已经尝试将 adapter 声明为全局,但仍然出现相同的错误。请让我知道我该如何解决这个问题。谢谢!

改变这个:

 DatabaseReference itemRef = adapter.getItem(position);

进入这个:

Personnel itemRef = adapter.getItem(position);