[RESOLVIDO] Mudou alguma permissão pra nova biblioteca androidx? É que quando eu vou fazer um adapter para uma lista, da uma exceção

16 respostas Resolvido
xmlmobileandroidjavaprogramação
Gabriel432135

java.lang.NullPointerException, quando eu tento pegar os views do XML. Eu fiz outro tópico, com o código completo, mas ninguém quer ajudar :frowning:

16 Respostas

rodriguesabner

se ta dando nullpointer é pq tem algo errado, mostra o código e o erro e a linha do erro.

Gabriel432135

Eu fiz outro tópico, vou passar o link

rodriguesabner

escreve de novo, não precisa passar link

Gabriel432135

ok, to pegando aqui

Gabriel432135
package com.example.cardsfelpudo;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

public class MeuAdaptador extends ArrayAdapter{
public MeuAdaptador(@NonNull Context context, int resource) {
super(context, resource);
}

```
@Override
public void add(@Nullable Object object) {
    super.add(object);
}

@Override
public int getCount() {
    return super.getCount();
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    View objetoView = convertView;
    View v;
    ViewElemento personagem;

    if(convertView==null){
        LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        layoutInflater.inflate(R.layout.meu_layout, parent, false);

        personagem = new ViewElemento();

        personagem.setIMAGEM((ImageView) objetoView.findViewById(R.id.iconeItem));
        personagem.setTITULO((TextView) objetoView.findViewById(R.id.titulo));
        personagem.setDISCRICAO((TextView) objetoView.findViewById(R.id.discrição));

        objetoView.setTag(personagem);
    }else{
        personagem = (ViewElemento) objetoView.getTag();
    }

    DadosPersonagem dados = (DadosPersonagem) this.getItem(position);
    personagem.getIMAGEM().setImageResource(dados.getICONE());
    personagem.getTITULO().setText(dados.getTITULO());
    personagem.getDISCRICAO().setText(dados.getDISCRICAO());

    return objetoView;
}
-------

erro:
04-04 20:46:12.671 8796-8796/com.example.cardsfelpudo E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.cardsfelpudo, PID: 8796
java.lang.NullPointerException
at com.example.cardsfelpudo.MeuAdaptador.getView(MeuAdaptador.java:42)
at android.widget.AbsListView.obtainView(AbsListView.java:2263)
at android.widget.ListView.makeAndAddView(ListView.java:1790)
at android.widget.ListView.fillDown(ListView.java:691)
at android.widget.ListView.fillFromTop(ListView.java:752)
at android.widget.ListView.layoutChildren(ListView.java:1630)
at android.widget.AbsListView.onLayout(AbsListView.java:2091)
at android.view.View.layout(View.java:14838)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1915)
at android.view.View.layout(View.java:14838)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14838)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:444)
at android.view.View.layout(View.java:14838)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14838)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14838)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14838)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1999)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1756)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1008)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5753)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:544)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
04-04 20:47:31.421 8796-8796/com.example.cardsfelpudo I/Process: Sending signal. PID: 8796 SIG: 9
Gabriel432135
No caso, o erro é nessa parte:

personagem.setIMAGEM((ImageView) objetoView.findViewById(R.id.iconeItem));

personagem.setTITULO((TextView) objetoView.findViewById(R.id.titulo));

personagem.setDISCRICAO((TextView) objetoView.findViewById(R.id.discrição));
rodriguesabner

Linha 42? É essa?

personagem.setIMAGEM((ImageView) objetoView.findViewById(R.id.iconeItem));

Gabriel432135

É, da erro nessa linha, onde começa o:
personagem.setIMAGEM((ImageView) objetoView.findViewById(R.id.iconeItem));

Se ignorar essa, ele crasha na próxima com o mesmo erro

rodriguesabner

Esses itens estão presentes no meu_layout?

Mostra esse xml

Gabriel432135
<?xml version="1.0" encoding="utf-8"?>
<ImageView
    android:id="@+id/iconeItem"
    android:layout_width="188dp"
    android:layout_height="130dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@drawable/felpudo"
    android:contentDescription="TODO" />

<TextView
    android:id="@+id/titulo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="1dp"
    android:text="TextView"
    app:layout_constraintBottom_toBottomOf="@+id/iconeItem"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.116"
    app:layout_constraintStart_toEndOf="@+id/iconeItem"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.144" />

<TextView
    android:id="@+id/discrição"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="20dp"
    android:text="TextView"
    app:layout_constraintBottom_toBottomOf="@+id/iconeItem"
    app:layout_constraintStart_toEndOf="@+id/iconeItem"
    app:layout_constraintTop_toBottomOf="@+id/titulo"
    app:layout_constraintVertical_bias="0.513" />

</androidx.constraintlayout.widget.ConstraintLayout>

rodriguesabner
Solucao aceita

Não usa acentuação em nada que vc fizer.

Cara, eu acredito q o problema esteja nessa sua condição aí, tira esse if e tente de novo.

Gabriel432135

Blz, vou tentar aqui e mando as novidades. Vlw por enquanto :slight_smile:

Gabriel432135

Engraçado que o professor faz quase igualzinho, e pra ele da tudo certo, mas pra mim, só falta o pc explodir na minha cara kkk. Ser iniciante é foda

rodriguesabner

Faz parte! As vezes os detalhes passam despercebidos…

Gabriel432135

Vlw, mano. Realmente. Era um erro dentro daquela condição. Eu esqueci de colocar:

objetoView=layoutInflater.inflate(R.layout.meu_layout, parent, false);

Só coloquei

layoutInflater.inflate(R.layout.meu_layout, parent, false);

Nem pra IDE avisar kkkk. Deu certo aqui :smiley:

rodriguesabner

Boa!

Criado 5 de abril de 2020
Ultima resposta 5 de abr. de 2020
Respostas 16
Participantes 2