如何使用Firebase结果检索ListView中的位置 [英] How to retrieve the position in a ListView with Firebase results
问题描述
我不使用 FirebaseAdapter
或任何 Firebase-UI
依赖关系,I现在已经使这个完全原生,但我在这一行尝试传递额外的问题:
I'm not using FirebaseAdapter
or any Firebase-UI
dependency, I have made this completly native for now, but I'm getting a problem at this line trying to pass extras:
mRootDatabase = getAdapter(mContext ).getItem(position);
mRootDatabase = getAdapter(mContext).getItem(position);
必需的DatabaseReference,找到UserPojo
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()
来更快地做到这一点,但我想知道如何在没有它的情况下接近相同的原因,因为我的应用程序没有实现任何FirebaseAdapter,并且我不想再次重做我的所有代码
In FirebaseListAdapter
you can use getRef()
in order to do this faster, but im wondering how to approach the same without it because my app does not have implemented any FirebaseAdapters , and I dont want to redo all my code again
编辑:
这就是我得到我的适配器的方式
This is how I got my adapter
public ArrayAdapter<UserPojo> getAdapter(Context adapterContext) {
return new ArrayAdapter<UserPojo>(adapterContext,android.R.layout.simple_list_item_1,getmList());
}
谢谢!
推荐答案
要解决此问题,您需要更改以下代码行:
To solve this, you need to change the following line of code:
mRootDatabase = getAdapter(mContext).getItem(position);
到
mRootDatabase = adapter.getRef(position);
其中 adapter
变量是实际的适配器您用来显示数据。
In which adapter
variable is the actual adapter that you are using to display the data.
修改:
您不能使用 getRef()
方法,除非您使用的是Firebase-UI库。您无法从 ArrayAdapter
对象中获取 DatabaseReference
对象。此类中的方法均未返回 DatabaseReference
对象。您可以实现此目的的唯一方法是使用 Firebase-UI 库。
You cannot use getRef()
method, unless you are using Firebase-UI library. You cannot get the DatabaseReference
object from the ArrayAdapter
object. None of the methods inside this class return a DatabaseReference
object. The only way in which you can achieve this is to use Firebase-UI library.
这篇关于如何使用Firebase结果检索ListView中的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!