Obecná diskuze o vývojiVlastní ArrayAdapter problem

Moderátoři: mArtinko5MB, mArtinko5MB

Odpovědět
Tomickck
Stálý androiďák
Příspěvky: 105
Registrován: úte 27. led 2015 15:38:07
Typ mobilu / ROM: Samsung GALAXY S4

Vlastní ArrayAdapter problem

Příspěvek od Tomickck »

Ahoj, mám vlastní ArrayAdapter

Kód: Vybrat vše

public class LevelsAdapter extends ArrayAdapter<Integer> {

    private final Activity context;
    private final List<Integer> levelNumbers, completedNumbers, colors;

    public LevelsAdapter(Activity context, List<Integer> levelNumbers, List<Integer> completedNumbers, List<Integer> colors) {
        super(context, R.layout.item_levels, colors);

        this.context = context;
        this.levelNumbers = levelNumbers;
        this.completedNumbers = completedNumbers;
        this.colors = colors;
    }

    public View getView(int position, View view, ViewGroup parent) {

        if(view==null) {
            LayoutInflater inflater = context.getLayoutInflater();
            view = inflater.inflate(R.layout.item_levels, null, true);
        }
        TextView number = (TextView) view.findViewById(R.id.levelNumber);
        TextView complete = (TextView) view.findViewById(R.id.completedNumber);
        RelativeLayout relativeLayout = (RelativeLayout)view.findViewById(R.id.relativeLayout);

        number.setText(levelNumbers.get(position));
        complete.setText(completedNumbers.get(position)+"/10");
        relativeLayout.setBackgroundColor(colors.get(position));

        return view;
    }
}
Používám ho

Kód: Vybrat vše

  public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_menu, container, false);
        levels = (ListView) view.findViewById(R.id.listViewLevels);

        completed = new ArrayList<>();
        colors = new ArrayList<>();
        levelNumbers = new ArrayList<>();

        for (int i = 1; i <= 5; i++) {
            levelNumbers.add(i);
            completed.add(5);
        }

        colors.add(R.color.md_red_900);
        colors.add(R.color.md_red_800);
        colors.add(R.color.md_red_700);
        colors.add(R.color.md_red_600);
        colors.add(R.color.md_red_500);

        
        LevelsAdapter levelsAdapter = new LevelsAdapter(getActivity(), levelNumbers, completed,colors);
        levels.setAdapter(levelsAdapter);

        return view;
    }
zde item xml

Kód: Vybrat vše

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/relativeLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/level"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="Level"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="#fff"
            android:textSize="35sp" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/relativeLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/relativeLayout"
        android:layout_marginBottom="2dp">

        <TextView
            android:id="@+id/completed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="Dokončeno"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/completedNumber"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_toEndOf="@+id/completed"
            android:layout_toRightOf="@+id/completed"
            android:text="1/10"
            android:textSize="18sp" />
    </RelativeLayout>

    <ImageView
        android:id="@+id/texture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/relativeLayout2"
        android:scaleType="fitEnd"
        android:src="@drawable/texture" />

    <TextView
        android:id="@+id/levelNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_margin="10dp"
        android:text="1"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#fff"
        android:textSize="35sp" />
</RelativeLayout>
A píše mi error

Kód: Vybrat vše

 FATAL EXCEPTION: main
                                                                                Process: cz.tmckdevelopment.youtuberiquiz, PID: 2958
                                                                                java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(int)' on a null object reference
                                                                                    at cz.tmckdevelopment.youtuberiquiz.LevelsAdapter.getView(LevelsAdapter.java:42)
                                                                                    at android.widget.AbsListView.obtainView(AbsListView.java:2823)
                                                                                    at android.widget.ListView.measureHeightOfChildren(ListView.java:1290)
                                                                                    at android.widget.ListView.onMeasure(ListView.java:1202)
                                                                                    at android.view.View.measure(View.java:18596)
                                                                                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
                                                                                    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1435)
                                                                                    at android.widget.LinearLayout.measureVertical(LinearLayout.java:721)
                                                                                    at android.widget.LinearLayout.onMeasure(LinearLayout.java:612)
                                                                                    at android.view.View.measure(View.java:18596)
                                                                                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
                                                                                    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                                    at android.view.View.measure(View.java:18596)
                                                                                    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
                                                                                    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:464)
                                                                                    at android.view.View.measure(View.java:18596)
                                                                                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
                                                                                    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                                    at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                                    at android.view.View.measure(View.java:18596)
                                                                                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
                                                                                    at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:391)
                                                                                    at android.view.View.measure(View.java:18596)
                                                                                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
                                                                                    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                                    at android.view.View.measure(View.java:18596)
                                                                                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
                                                                                    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1435)
                                                                                    at android.widget.LinearLayout.measureVertical(LinearLayout.java:721)
                                                                                    at android.widget.LinearLayout.onMeasure(LinearLayout.java:612)
                                                                                    at android.view.View.measure(View.java:18596)
                                                                                    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5827)
                                                                                    at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
                                                                                    at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2897)
                                                                                    at android.view.View.measure(View.java:18596)
                                                                                    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2248)
                                                                                    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1306)
                                                                                    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1548)
                                                                                    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1191)
                                                                                    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6642)
                                                                                    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
                                                                                    at android.view.Choreographer.doCallbacks(Choreographer.java:590)
                                                                                    at android.view.Choreographer.doFrame(Choreographer.java:560)
                                                                                    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
                                                                                    at android.os.Handler.handleCallback(Handler.java:739)
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                    at android.os.Looper.loop(Looper.java:145)
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5951)
                                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                                    at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
Už fakt nevím čím by to mohlo být, když jsem to používal v jiných projektech, nebyl problém, předem díky za odpověď.
Uživatelský avatar
mka
Robot
Příspěvky: 1206
Registrován: pát 29. dub 2011 10:55:05
Typ mobilu / ROM: kde co
Kontaktovat uživatele:

Re: Vlastní ArrayAdapter problem

Příspěvek od mka »

No čím by to asi mohlo být:

Kód: Vybrat vše

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(int)' on a null object reference
Prostě se snažíš použít nějakej TextView, který je null.
To, že použiješ

Kód: Vybrat vše

view.findViewById
ještě neznamená, že se podaří ho najít a přiřadit...
Nepište mi PM, pokud to není vyloženě soukromé.
Nevěřte kdejaké hlouposti, byť by byla předkládána jako svatá pravda nejsvětější.
Odpovědět

Zpět na „Obecná diskuze o vývoji“