我不使用FirebaseAdapter
或任何Firebase-UI
依赖项,目前我已经完全将其设为本机,但是在此行遇到问题通过附加功能:
mRootDatabase = getAdapter(mContext).getItem(position);
所需的DatabaseReference,找到了UserPojo
public void clickListItems(ListView listView,final DatabaseReference mRootDatabase) {
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(mContext, "Clicked: " + getmList().get(position), Toast.LENGTH_SHORT).show();
mRootDatabase = getAdapter(mContext).getItem(position);
Intent intent = new Intent(mContext, UserEdit.class);
intent.putExtra("uid", mRootDatabase.getKey());
intent.putExtra("Name",getAdapter(mContext).getItem(position).getName());
intent.putExtra("Email", getAdapter(mContext).getItem(position).getEmail());
intent.putExtra("Pay", getAdapter(mContext).getItem(position).getPay());
intent.putExtra("LastCon", getAdapter(mContext).getItem(position).getLastCon());
intent.putExtra("FirstCon", getAdapter(mContext).getItem(position).getFirstCon());
mContext.startActivity(intent);
}
});
}
在FirebaseListAdapter
中,您可以使用getRef()
来更快地执行此操作,但是我想知道如何在没有它的情况下进行处理,因为我的应用程序尚未实现任何FirebaseAdapters,并且我不想重做再次输入我所有的代码
编辑:
这就是我获得适配器的方式
public ArrayAdapter<UserPojo> getAdapter(Context adapterContext) {
return new ArrayAdapter<UserPojo>(adapterContext,android.R.layout.simple_list_item_1,getmList());
}
谢谢!
答案 0 :(得分:2)
要解决此问题,您需要更改以下代码行:
mRootDatabase = getAdapter(mContext).getItem(position);
到
mRootDatabase = adapter.getRef(position);
其中adapter
变量是您用来显示数据的实际适配器。
编辑:
除非使用Firebase-UI库,否则不能使用getRef()
方法。您无法从DatabaseReference
对象获得ArrayAdapter
对象。此类中的the methods没有一个返回DatabaseReference
对象。实现此目的的唯一方法是使用Firebase-UI库。
答案 1 :(得分:2)
您似乎正在尝试将Pojo分配给数据库引用,相反,您需要将其分配给实际的Pojo并以这种方式引用 像这样
UserPojo User = adapter.getItem(position);