在应用程式android上追踪预设使用者。我无法让用户默认遵循uid

时间:2019-03-09 01:44:10

标签: android firebase firebase-realtime-database

默认情况下,我无法让用户遵循uid,有人可以检查我的代码以查看我做错了什么吗?

实时使用Firebase 我输入了uid,但应用程序未遵循默认用户,该如何解决呢?     代码->

private void salvarSeguidor(Usuario uLogado, Usuario uAmigo){

    /*
    * seguidores
    * id_usuario_selecionado (id amigo)
    *   id_usuario_logado (id usuario logado)
    *       dados logado
    * */
    HashMap<String, Object> dadosUsuarioLogado = new HashMap<>();
    dadosUsuarioLogado.put("nome", uLogado.getNome() );
    dadosUsuarioLogado.put("caminhoFoto", uLogado.getCaminhoFoto() );
    DatabaseReference seguidorRef = seguidoresRef
            .child( "4AI1UzwgdTVJhFERoVeWxlXeAh52" )
            .child( uLogado.getId() );
    seguidorRef.setValue( dadosUsuarioLogado );

    //Alterar botao acao para seguindo
    buttonAcaoPerfil.setText("Seguindo");
    buttonAcaoPerfil.setOnClickListener(null);

    //Incrementar seguindo do usuário logado
    int seguindo = uLogado.getSeguindo() + 1;
    HashMap<String, Object> dadosSeguindo = new HashMap<>();
    dadosSeguindo.put("seguindo", seguindo );
    DatabaseReference usuarioSeguindo = usuariosRef
            .child( uLogado.getId() );
    usuarioSeguindo.updateChildren( dadosSeguindo );

    //Incrementar seguidores do amigo
    int seguidores = uAmigo.getSeguidores() + 1;
    HashMap<String, Object> dadosSeguidores = new HashMap<>();
    dadosSeguidores.put("seguidores", seguidores );
    DatabaseReference usuarioSeguidores = usuariosRef
            .child( uAmigo.getId() );
    usuarioSeguidores.updateChildren( dadosSeguidores );


}

全码活动Android应用

public class PerfilAmigoActivity extends AppCompatActivity {

private Usuario usuarioSelecionado;
private Usuario usuarioLogado;
private Button buttonAcaoPerfil;
private CircleImageView imagePerfil;
private TextView textPublicacoes, textSeguidores, textSeguindo;
private GridView gridViewPerfil;
private AdapterGrid adapterGrid;

private DatabaseReference firebaseRef;
private DatabaseReference usuariosRef;
private DatabaseReference usuarioAmigoRef;
private DatabaseReference usuarioLogadoRef;
private DatabaseReference seguidoresRef;
private DatabaseReference postagensUsuarioRef;
private ValueEventListener valueEventListenerPerfilAmigo;

private String idUsuarioLogado;
private List<Postagem> postagens;

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

    //Configurações iniciais
    firebaseRef = ConfiguracaoFirebase.getFirebase();
    usuariosRef = firebaseRef.child("usuarios");
    seguidoresRef = firebaseRef.child("seguidores");
    idUsuarioLogado = UsuarioFirebase.getIdentificadorUsuario();

    //Inicializar componentes
    inicializarComponentes();

    //Configura toolbar
    Toolbar toolbar = findViewById(R.id.toolbarPrincipal);
    toolbar.setTitle("Pefil");
    setSupportActionBar( toolbar );

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_black_24dp);

    //Recuperar usuario selecionado
    Bundle bundle = getIntent().getExtras();
    if( bundle != null ){
        usuarioSelecionado = (Usuario) bundle.getSerializable("usuarioSelecionado");

        //Configurar referencia postagens usuario
        postagensUsuarioRef = ConfiguracaoFirebase.getFirebase()
                .child("postagens")
                .child( usuarioSelecionado.getId() );

        //Configura nome do usuário na toolbar
        getSupportActionBar().setTitle( usuarioSelecionado.getNome() );

        //Recuperar foto do usuário
        String caminhoFoto = usuarioSelecionado.getCaminhoFoto();
        if( caminhoFoto != null ){
            Uri url = Uri.parse( caminhoFoto );
            Glide.with(PerfilAmigoActivity.this)
                    .load( url )
                    .into( imagePerfil );
        }

    }

    //Inicializar image loader
    inicializarImageLoader();

    //Carrega as fotos das postagens de um usuário
    carregarFotosPostagem();

    //Abre a foto clicada
    gridViewPerfil.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Postagem postagem = postagens.get( position );
            Intent i = new Intent(getApplicationContext(), VisualizarPostagemActivity.class );

            i.putExtra("postagem", postagem );
            i.putExtra("usuario", usuarioSelecionado );

            startActivity( i );

        }
    });

}

/**
 * Instancia a UniversalImageLoader
 */
public void inicializarImageLoader() {

    ImageLoaderConfiguration config = new ImageLoaderConfiguration
            .Builder(this)
            .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
            .memoryCacheSize(2 * 1024 * 1024)
            .diskCacheSize(50 * 1024 * 1024)
            .diskCacheFileCount(100)
            .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
            .build();
    ImageLoader.getInstance().init( config );

}

public void carregarFotosPostagem(){

    //Recupera as fotos postadas pelo usuario
    postagens = new ArrayList<>();
    postagensUsuarioRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            //Configurar o tamanho do grid
            int tamanhoGrid = getResources().getDisplayMetrics().widthPixels;
            int tamanhoImagem = tamanhoGrid / 3;
            gridViewPerfil.setColumnWidth( tamanhoImagem );

            List<String> urlFotos = new ArrayList<>();
            for( DataSnapshot ds: dataSnapshot.getChildren() ){
                Postagem postagem = ds.getValue( Postagem.class );
                postagens.add( postagem );
                urlFotos.add( postagem.getCaminhoFoto() );
                //Log.i("postagem", "url:" + postagem.getCaminhoFoto() );
            }

            //Configurar adapter
            adapterGrid = new AdapterGrid(getApplicationContext(), R.layout.grid_postagem, urlFotos );
            gridViewPerfil.setAdapter( adapterGrid );

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}

private void recuperarDadosUsuarioLogado(){

    usuarioLogadoRef = usuariosRef.child( idUsuarioLogado );
    usuarioLogadoRef.addListenerForSingleValueEvent(
            new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    //Recupera dados de usuário logado
                    usuarioLogado = dataSnapshot.getValue( Usuario.class );

                    /* Verifica se usuário já está seguindo
                       amigo selecionado
                     */
                    verificaSegueUsuarioAmigo();

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            }
    );

}

private void verificaSegueUsuarioAmigo(){

    DatabaseReference seguidorRef = seguidoresRef
            .child( usuarioSelecionado.getId() )
            .child( idUsuarioLogado );

    seguidorRef.addListenerForSingleValueEvent(
            new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if( dataSnapshot.exists() ){
                        //Já está seguindo
                        Log.i("dadosUsuario", ": Seguindo" );
                        habilitarBotaoSeguir( true );
                    }else {
                        //Ainda não está seguindo
                        Log.i("dadosUsuario", ": seguir" );
                        habilitarBotaoSeguir( false );
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            }
    );

}

private void habilitarBotaoSeguir( boolean segueUsuario ){

    if ( segueUsuario ){
        buttonAcaoPerfil.setText("Seguindo");
    }else {

        buttonAcaoPerfil.setText("Seguir");

        //Adiciona evento para seguir usuário
        buttonAcaoPerfil.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Salvar seguidor
                salvarSeguidor(usuarioLogado, usuarioSelecionado);
            }
        });

    }

}

private void salvarSeguidor(Usuario uLogado, Usuario uAmigo){

    /*
    * seguidores
    * id_usuario_selecionado (id amigo)
    *   id_usuario_logado (id usuario logado)
    *       dados logado
    * */
    HashMap<String, Object> dadosUsuarioLogado = new HashMap<>();
    dadosUsuarioLogado.put("nome", uLogado.getNome() );
    dadosUsuarioLogado.put("caminhoFoto", uLogado.getCaminhoFoto() );
    DatabaseReference seguidorRef = seguidoresRef
            .child( "4AI1UzwgdTVJhFERoVeWxlXeAh52" )
            .child( uLogado.getId() );
    seguidorRef.setValue( dadosUsuarioLogado );

    //Alterar botao acao para seguindo
    buttonAcaoPerfil.setText("Seguindo");
    buttonAcaoPerfil.setOnClickListener(null);

    //Incrementar seguindo do usuário logado
    int seguindo = uLogado.getSeguindo() + 1;
    HashMap<String, Object> dadosSeguindo = new HashMap<>();
    dadosSeguindo.put("seguindo", seguindo );
    DatabaseReference usuarioSeguindo = usuariosRef
            .child( uLogado.getId() );
    usuarioSeguindo.updateChildren( dadosSeguindo );

    //Incrementar seguidores do amigo
    int seguidores = uAmigo.getSeguidores() + 1;
    HashMap<String, Object> dadosSeguidores = new HashMap<>();
    dadosSeguidores.put("seguidores", seguidores );
    DatabaseReference usuarioSeguidores = usuariosRef
            .child( uAmigo.getId() );
    usuarioSeguidores.updateChildren( dadosSeguidores );


}

@Override
protected void onStart() {
    super.onStart();

    //Recuperar dados do amigo selecionado
    recuperarDadosPerfilAmigo();

    //Recuperar dados usuario logado
    recuperarDadosUsuarioLogado();

}

@Override
protected void onStop() {
    super.onStop();
    usuarioAmigoRef.removeEventListener( valueEventListenerPerfilAmigo );
}

private void recuperarDadosPerfilAmigo(){

    usuarioAmigoRef = usuariosRef.child( usuarioSelecionado.getId() );
    valueEventListenerPerfilAmigo = usuarioAmigoRef.addValueEventListener(
            new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    Usuario usuario = dataSnapshot.getValue( Usuario.class );

                    String postagens = String.valueOf( usuario.getPostagens() );
                    String seguindo = String.valueOf( usuario.getSeguindo() );
                    String seguidores = String.valueOf( usuario.getSeguidores() );

                    //Configura valores recuperados
                    textPublicacoes.setText( postagens );
                    textSeguidores.setText( seguidores );
                    textSeguindo.setText( seguindo );

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            }
    );

}

private void inicializarComponentes(){
    imagePerfil = findViewById(R.id.imagePerfil);
    gridViewPerfil = findViewById(R.id.gridViewPerfil);
    buttonAcaoPerfil = findViewById(R.id.buttonAcaoPerfil);
    textPublicacoes = findViewById(R.id.textPublicacoes);
    textSeguidores = findViewById(R.id.textSeguidores);
    textSeguindo = findViewById(R.id.textSeguindo);
    buttonAcaoPerfil.setText("Carregando");
}

@Override
public boolean onSupportNavigateUp() {
    finish();
    return false;
}

}

0 个答案:

没有答案