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

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:

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

1 curtida

Eu fiz outro tópico, vou passar o link

escreve de novo, não precisa passar link

1 curtida

ok, to pegando aqui

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

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

Linha 42? É essa?

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

1 curtida

É, 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

Esses itens estão presentes no meu_layout?

Mostra esse xml

1 curtida
<?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>

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.

1 curtida

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

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

Faz parte! As vezes os detalhes passam despercebidos…

1 curtida

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:

1 curtida

Boa!

1 curtida