我不使用FirebaseAdapter
或任何Firebase-UI
依赖项,我现在已经完全原生了,但我在此行尝试传递额外内容时遇到问题:
mRootDatabase = getAdapter(mContext).getItem(position);
Required DatabaseReference , Found 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());
}
谢谢!
最佳答案
要解决这个问题,您需要更改以下代码行:
mRootDatabase = getAdapter(mContext).getItem(position);
到
mRootDatabase = adapter.getRef(position);
其中 adapter
变量是您用来显示数据的实际适配器。
编辑:
您不能使用 getRef()
方法,除非您使用的是 Firebase-UI 库。您无法从 ArrayAdapter
对象获取 DatabaseReference
对象。没有 the methods在此类中返回一个 DatabaseReference
对象。实现此目的的唯一方法是使用 Firebase-UI图书馆。
关于java - 如何使用 Firebase 结果检索 ListView 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52081205/