2017-08-26 5 views
0

Ich habe einen benutzerdefinierten Spinner-Adapter für meine Spinner. dies ist meine Adapterklasse:android-benutzerdefinierte Spinner-Array-Adapter getDropDownView null zurück

public class MySpinnerAdapter extends ArrayAdapter<String> { 
// Initialise custom font, for example: 
Typeface font = Typeface.createFromAsset(getContext().getAssets(), "IRAN Sans Bold.ttf"); 
public MySpinnerAdapter(Context context, int resource, String[] items) { 
    super(context, resource, items); 
} 

// Affects default (closed) state of the spinner 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    TextView view = (TextView) super.getView(position, convertView, parent); 
    view.setTypeface(font); 
    return view; 
} 

// Affects opened state of the spinner 
@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent) { 
    TextView view = (TextView) super.getDropDownView(position, convertView, parent); 
    view.setTypeface(font); 
    return view; 
} 

}

dies ist simple_spinner Layout:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="right" 
    android:textColor="#000" 
    android:textSize="16dip" /> 

das Problem ist, macht es den Spinner und ich kann das erste Array-Element in Spinnern sehen, aber wenn ich möchte das Drop-Down-Spinner öffnen, ist es ein null-Fehler zurück:

FATAL EXCEPTION: main 
                      java.lang.NullPointerException 
                       at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394) 
                       at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:415) 
                       at ir.babaarzooni.persiandesigners.MySpinnerAdapter.getDropDownView(MySpinnerAdapter.java:33) 
                       at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getDropDownView(AppCompatSpinner.java:637) 
                       at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getView(AppCompatSpinner.java:633) 
                       at android.support.v7.widget.AppCompatSpinner.compatMeasureContentWidth(AppCompatSpinner.java:560) 
                       at android.support.v7.widget.AppCompatSpinner.access$500(AppCompatSpinner.java:64) 
                       at android.support.v7.widget.AppCompatSpinner$DropdownPopup.computeContentWidth(AppCompatSpinner.java:751) 
                       at android.support.v7.widget.AppCompatSpinner$DropdownPopup.show(AppCompatSpinner.java:776) 
                       at android.support.v7.widget.AppCompatSpinner.performClick(AppCompatSpinner.java:434) 
                       at android.view.View$PerformClick.run(View.java:17721) 
                       at android.os.Handler.handleCallback(Handler.java:730) 
                       at android.os.Handler.dispatchMessage(Handler.java:92) 
                       at android.os.Looper.loop(Looper.java:137) 
                       at android.app.ActivityThread.main(ActivityThread.java:5103) 
                       at java.lang.reflect.Method.invokeNative(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:525) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                       at dalvik.system.NativeStart.main(Native Method) 

dies mein Array ist:

<array name="NearAxL"> 
    <item>انتخاب AX</item> 
    <item>0</item> 
    <item>0.25</item> 
    <item>0.5</item> 
    <item>0.75</item> 
    <item>1</item> 
    <item>1.25</item> 
    <item>1.5</item> 
    <item>1.75</item> 
    <item>2</item> 
    <item>2.25</item> 
    <item>2.5</item> 
    <item>2.75</item> 
    <item>3</item> 
</array> 

das ist Java-Code:

 NearAxR.setAdapter(new MySpinnerAdapter (this,R.layout.simple_spinner, 
      getResources().getStringArray(R.array.NearAxL))); 

was mit diesem Code ist falsch? Diese

+0

Ist es Ihre Font-Datei in Assets Ordner vorhanden ist? Wie nach deinem Pfad geben? –

+0

@RonakJoshi ja Ich habe die Schriftart-Datei –

+0

@jjones können Sie Ihre Frage mit R.array.NearAxL Inhalt aktualisieren. – waleedsarwar86

Antwort

0

:

<array name="NearAxL"> 
    <item>انتخاب AX</item> 
    <item>0</item> 
    <item>0.25</item> 
    <item>0.5</item> 
    <item>0.75</item> 
    <item>1</item> 
    <item>1.25</item> 
    <item>1.5</item> 
    <item>1.75</item> 
    <item>2</item> 
    <item>2.25</item> 
    <item>2.5</item> 
    <item>2.75</item> 
    <item>3</item> 
</array> 

sollte stattdessen sein:

<string-array name="NearAxL"> 
    <item>انتخاب AX</item> 
    <item>0</item> 
    <item>0.25</item> 
    <item>0.5</item> 
    <item>0.75</item> 
    <item>1</item> 
    <item>1.25</item> 
    <item>1.5</item> 
    <item>1.75</item> 
    <item>2</item> 
    <item>2.25</item> 
    <item>2.5</item> 
    <item>2.75</item> 
    <item>3</item> 
</string-array> 

Das array Element ist für Typed Arrays. String-Arrays müssen string-array verwenden.

, ob es funktioniert immer noch nicht Versuch mit dem eingebauten in spinner Layout wie unten

NearAxR.setAdapter(new MySpinnerAdapter (this,android.R.layout.simple_spinner_item, 
     getResources().getStringArray(R.array.NearAxL)));