【发布时间】:2020-01-22 02:13:58
【问题描述】:
我在获取 Firebase 数据库密钥时在 onItemClick 中收到了 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(修改自 this)
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();
}
});
首先我在adapter.getItem(position); 下的adapter 上遇到Variable 'adapter' is accessed from within inner class, needs to be declared final 错误onItemClick
所以我在final FirebaseListAdapter<Personnel> adapter... 处添加了final 然后出现此错误
我尝试将adapter 声明为全局,但仍然出现相同的错误。请让我知道我该如何解决这个问题。谢谢!
【问题讨论】:
标签: java android firebase firebase-realtime-database firebaseui