Как передать значение Firebase следующему действию - PullRequest
0 голосов
/ 19 ноября 2018

У нас есть ключ для просмотра списка из Firebase. Для просмотра значения в следующей «Активности» при нажатии клавиши Как мне объявить putExtra?

пример)

Книга

  • 1: ааа

  • 2: bbb

  • 3: ссс

  • 4: ддд

ListView

1

2

3

4 << выберите </p>

Я хочу увидеть DDD на следующем занятии.

LoadActivity.java

package com.dogeun.auth;

import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;


import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.FirebaseDatabase;


public class LoadActivity extends AppCompatActivity implements 
View.OnClickListener{

private FirebaseDatabase mFirebaseDatabase;
private FirebaseAuth mFirebaseAuth;
private FirebaseUser mFirebaseUser;
private ListView mListview;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_load);


    mFirebaseDatabase = FirebaseDatabase.getInstance();
    mFirebaseAuth = mFirebaseAuth.getInstance();
    mFirebaseUser = mFirebaseAuth.getCurrentUser();
    mListview = (ListView) findViewById(R.id.listview);

    final ArrayAdapter<String> adapter =
            new ArrayAdapter<String>(this, android.R.layout.two_line_list_item, android.R.id.text1);
    mListview.setAdapter(adapter);

    mFirebaseDatabase.getReference("Book/" + mFirebaseUser.getUid())
            .addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                    adapter.add(dataSnapshot.getKey());
                    adapter.add((String) dataSnapshot.getValue());
                }

                @Override
                public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                }

                @Override
                public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

В этой части значение Как мне заставить его поставить Экстра?

    mListview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView parent, View v, int position, long id) {
            Intent intent = new Intent(LoadActivity.this, LoadtextActivity.class);
            intent.putExtra("text",?????);
            startActivity(intent);
        }
    }) ;

}

@Override
public void onClick(View v) {

}
}

пожалуйста, помогите мне

1 Ответ

0 голосов
/ 19 ноября 2018

Я думаю, что вы добавляете значение дважды в своем адаптере для одного и того же элемента / потомка.

@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
    adapter.add(dataSnapshot.getKey());
    adapter.add((String) dataSnapshot.getValue());

    // you should add it only once and get value by using adapter.getItem(position) and send that to other activity
}

Смотрите мой ответ в комментарии в вашем коде выше

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