Как получить позицию в ListView с результатами Firebase - PullRequest
0 голосов
/ 29 августа 2018

Я не с использованием FirebaseAdapter или какой-либо зависимости Firebase-UI, я сделал это полностью нативным на данный момент, но у меня возникает проблема в этой строке при попытке передать дополнительные:

mRootDatabase = getAdapter (mContext) .getItem (position);

Обязательна ссылка на базу данных, найдено 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, и я не хочу повторять весь мой код снова

Edit:

Вот так я и получил свой адаптер

 public ArrayAdapter<UserPojo> getAdapter(Context adapterContext) {
        return new ArrayAdapter<UserPojo>(adapterContext,android.R.layout.simple_list_item_1,getmList());
    }

Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Похоже, вы пытаетесь назначить Pojo для ссылки на базу данных, вместо этого вам нужно будет присвоить его фактическому pojo и ссылаться на него таким образом Как то так

UserPojo User = adapter.getItem(position);
0 голосов
/ 29 августа 2018

Чтобы решить эту проблему, вам нужно изменить следующую строку кода:

mRootDatabase = getAdapter(mContext).getItem(position);

до

mRootDatabase = adapter.getRef(position);

В которой adapter переменная - это фактический адаптер, который вы используете для отображения данных.

Edit:

Вы не можете использовать метод getRef(), если не используете библиотеку Firebase-UI. Вы не можете получить объект DatabaseReference из объекта ArrayAdapter. Ни один из методов внутри этого класса не возвращает объект DatabaseReference. Единственный способ добиться этого - использовать библиотеку Firebase-UI .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...