2016-06-19 24 views
0

Ich versuche, JSON zu Spinner auffüllen, aber es ist fehlgeschlagen. Und der Fehler zeigt immer auf KatArtcAdapter -> getView und der schwerwiegende Fehler immer zeigen ArrayAdapter erfordert die Ressource ID, um eine TextView sein. Kannst du mir helfen, meine Fehler zu finden? Vielen Dank im fortgeschrittenenFüllen Sie JSON zu Spinner in Android

KatArtcAdapter.java

public class KatArtcAdapter extends ArrayAdapter<KategoriArt> { 
     private Activity context; 
     ArrayList<KategoriArt> data = null; 

     public KatArtcAdapter(Activity context, int resource,ArrayList<KategoriArt> data) { 
      super(context, resource, data); 
      this.context = context; 
      this.data = data; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      return super.getView(position, convertView, parent); 
     } 

     @Override 
     public View getDropDownView(int position, View convertView, ViewGroup parent) { 
      View row = convertView; 
      if (row == null) { 
       LayoutInflater inflater = context.getLayoutInflater(); 
       row = inflater.inflate(R.layout.spinner_item, parent, false); 
      } 

      KategoriArt item = data.get(position); 

      if (item != null) { // Parse the data from each object and set it. 
       TextView KatId = (TextView) row.findViewById(R.id.item_id); 
       TextView KatName = (TextView) row.findViewById(R.id.item_value); 
       if (KatId != null) { 
        KatId.setText(item.getIdKat()); 
       } 
       if (KatName != null) { 
        KatName.setText(item.getName()); 
       } 

      } 

      return row; 
     } 
    } 

MainActivity.Java

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, 
     RecyclerItemClickListener.OnItemClickListener{ 
    artikelAdapter mGridadapter; 
    JSONParser jParser= new JSONParser(); 
    JSONArray names=null; 
    private static final String URL_READ_KAT= "http://amobipets.azurewebsites.net/readKategoriArticle.php"; 
    private static final String TAG_PESAN = "message"; 
    private static final String TAG_HASIL = "result"; 
    private static final String TAG_ID_KAT = "id"; 
    private static final String TAG_KAT= "kategori"; 

    Spinner katyField; 
    ArrayList<KategoriArt> katList = new ArrayList<KategoriArt>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     katyField =(Spinner) findViewById(R.id.spinner); 
     new buildKatDropDown().execute(); 

     katyField.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       KategoriArt selectedKat=katList.get(position); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 
    } 
public class buildKatDropDown extends AsyncTask<String,String,String> { 

     int sukses=0; 

     public buildKatDropDown() { 
     } 

     @Override 
     protected void onPreExecute() { 
     } 

     @Override 
     protected String doInBackground(String... args) { 

      List<NameValuePair> params = new ArrayList<NameValuePair>(); 

      try 
      { 
       JSONObject json = jParser.makeHttpRequest(URL_READ_KAT, "GET", params); 
       if(json != null) 
       { 
        sukses = json.getInt(TAG_PESAN); 
        if(sukses == 1) 
        { 
         nameList = new ArrayList<HashMap<String,String>>(); 
         Log.d("Semua Nama: ", json.toString()); 
         names = json.getJSONArray(TAG_HASIL); 

         for(int i = 0; i < names.length();i++) 
         { 
          JSONObject c = names.getJSONObject(i); 
          String id = c.getString(TAG_ID_KAT); 
          String kategori = c.getString(TAG_KAT); 

          katList.add(new KategoriArt(id,kategori)); 

         } 

        } 
       } 
      }catch(JSONException e) 
      { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      if(sukses==1) 
      { 
       KatArtcAdapter ktAdapter=new KatArtcAdapter(MainActivity.this,R.layout.spinner_item,katList); 
       katyField.setAdapter(ktAdapter); 
      } 
     } 
    } 
} 

Stacktrace

06-19 21: 26: 44.328 21749-21904/com.amobi.newlomapodfix D/url: http://amobipets.azurewebsites.net/readKategoriArticle.php? 06-19 21: 26: 44.375 21749-21867/com.amobi.newlomapodfix E/Oberfläche: getSlotFromBufferLocked: unbekannter Puffer: 0xaaaa97d0 06-19 21: 26: 44.428 21749-21749/com.amobi.newlomapodfix W/Einstellungen: Die Einstellung "airplane_mode_on" wurde von " android.provider.Settings.System" in "android.provider.Settings.Global" geändert, , schreibgeschützter Wert zurückgegeben. 06-19 21: 26: 44.493 21749-21904/com.amobi.newlomapodfix I/info: [email protected] 06-19 21: 26: 44.494 21749-21904/com. amobi.newlomapodfix D/Semua Nama :: {"Ergebnis": [{"id": "11", "Kategorie": "Anjing"}, {"id": "21", "kategori": "Kucing" }, {"id": "31", "kategori": "Hamster"}, {"id": "41", "kategori": "Reptil"}], "nachricht": 1} 06-19 21 : 26: 44.704 21749-21749/com.amobi.newlomapodfix E/ArrayAdapter: Sie müssen eine Ressource-ID für ein TextView liefern 06-19 21: 26: 44.709 21749-21749/com.amobi.newlomapodfix D/AndroidRuntime: Herunterfahren VM 06-19 21: 26: 44.728 21749-21749/com.amobi.newlomapodfix E/AndroidRuntime: FATALE AUSNAHME: Haupt Prozess: com.amobi.newlomapodfix, PID: 21749 java.lang.IllegalSta teException: ArrayAdapter erfordert die Ressourcen-ID ein Textview bei android.widget.ArrayAdapter.createViewFromResource (ArrayAdapter.java:393) bei android.widget.ArrayAdapter.getView (ArrayAdapter.java:369) bei com zu sein. amobi.newlomapodfix.adapter.KatArtcAdapter.getView (KatArtcAdapter.java30) bei android.widget.AbsSpinner.onMeasure (AbsSpinner.java:194) bei android.widget.Spinner.onMeasure (Spinner.java:580) bei android.support.v7.widget.AppCompatSpinner.onMeasure (AppCompatSpinner.java:418) bei android.view.View.m easure (View.java:18788) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.FrameLayout.onMeasure (FrameLayout.java:194) bei android.view.View.measure (View.java:18788) bei android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) bei android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) bei android.view.View.measure (Blick .java: 18788) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) unter android.support.design.widget.CoordinatorLayout.onMeasureChild (CoordinatorLayout.java:664) bei android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild (HeaderScrollingViewBehavior.java:90) bei android.support.design.widget.AppBarLayout $ ScrollingViewBehavior.onMeasureChild (AppBarLayout.java: 1149) bei android.support.design.widget.CoordinatorLayout.onMeasure (CoordinatorLayout.java:729) bei android.view.View.measure (View.java:18788) bei android.support.v4.widget. DrawerLayout.onMeasure (DrawerLayout.java:1075) bei android.view.View.measure (View.java:18788) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.FrameLayout.onMeasure (FrameLayout.java:194) bei android.support.v7.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java: 135) bei android.view.View.measure (View.java:18788) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465) bei android.widget.LinearLayout.measureVertical (LinearLayout.java:748) bei android.widget.LinearLayout.onMeasure (LinearLayout.java:630) bei android.view.View.measure (View.java:18788) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.FrameLayout.onMeasure (FrameLayout.java:194) bei android.view.View.measure (View.java:18788) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1465) bei Android .widget.LinearLayout.measureVertical (LinearLayout.java:748) bei android.widget.LinearLayout.onMeasure (LinearLayout.java:630) bei android.view.View.measure (View.java:18788) bei android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5951) bei android.widget.FrameLayout.onMeasure (FrameLayout.java:194) bei com.android.internal.policy.PhoneWindow $ DecorView.onMeasure (PhoneWindow.java:2643) bei android.view.View.measure (View.java:18788) bei android.view.ViewRootImpl.performMeasure (ViewRootImpl.java: 2100) bei android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1216) bei android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1452) bei android.view.ViewRootImpl.do Traversal (ViewRootImpl.java:1107) bei android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:6013) bei android.view.Choreographer $ CallbackRecord.run (Choreographer.java:858) bei Android. view.Choreographer.doCallbacks (Choreographer.java:670) bei android.view.Choreographer.doFrame (Choreographer.java:606) bei android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:844) bei android .os.Handler.handleCallback (Handler.java:739) bei android.os.Handler.dispatchMessage (Handler.java: 95) bei android.os.Looper.loop (Looper.java:148) bei android.app.ActivityThread.main (ActivityThread.java:5417) bei java.lang.reflect.Method.invoke (Native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726)

EDIT

Spinner_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="1"> 

    <TextView 
     android:id="@+id/item_value" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.43"> 
    </TextView> 

    <TextView 
     android:id="@+id/item_id" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#FFFFFF" 
     android:layout_weight="0.10"> 
    </TextView> 

</LinearLayout> 
+0

Können Sie den 'R.layout.spinner_item' zeigen? –

+0

ja @ShreeKrishna –

+0

Haben Sie versucht, nur einen TextView zu verwenden? Steigt das Problem noch? –

Antwort

1

Wie unter this erwähnt, gehört super.getView zur Adapter-Schnittstelle. Es tut nichts.

Sie sollten eine Sicht auf die Methode getView() zurückgeben, wenn Sie ArrayAdapter anpassen. ref diese example.

+0

thx es ist jetzt fertig –

0

Wie Sie im Kommentar erwähnt haben, Aufhellen Es ist noch einmal mit einem einzigen Textview dann Sie die constructor mit 4 Parameter mit textViewResourceId wie dieser verwenden können,

ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects) 

Es nicht große Veränderung sein wird, aber Ihre Codes werden in etwa so aussehen,

public KatArtcAdapter(Activity context, int resource,int textViewResourceId, ArrayList<KategoriArt> data) { 
      .... 
     } 

Siehe doc für weitere Informationen, wenn noch der Fehler ausgelöst versuchen Sie nicht Ihre TextView mit einem anderen Layout zu umgeben.