如何在具有Firebase结果的ListView中检索位置

时间:2018-08-29 15:30:13

标签: java android firebase firebase-realtime-database

使用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());
    }

谢谢!

2 个答案:

答案 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);