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);
我在 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);