2015-10-06 66 views
0

加載的ArrayList我有MySql數據庫,這是我的JSON文件:如何微調

[{"NAME":"SILVA TORRES ELIANA","ID":"1151951743","INVOICE0":"8613","INVOICE1":"8761","INVOICE2":"8808","INVOICE3":"9141","INVOICE4":"9142","INVOICE5":"9143"}] 

我的Android應用程序擁有的EditText,按鈕的TextView和微調框,當用戶點擊按鈕的應用程序中顯示的名稱和ID,但我無法在Spinner中加載INVOICE。

這就是Java類:

package com.windroid.lfp; 

import android.content.Context; 
import android.graphics.Typeface; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.text.DecimalFormat; 
import java.text.NumberFormat; 
import java.util.ArrayList; 

public class Main extends AppCompatActivity { 

private TextView miAlumno; 
private Typeface miFont; 
public static String miDato; 
public static ArrayList<String> listFacturas = new ArrayList<>(); 
private Spinner miFactu; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button btAlumno = (Button)findViewById(R.id.btFind); 
     miAlumno = (TextView)findViewById(R.id.miTexto); 
     miFont = Typeface.createFromAsset(getAssets(),"fonts/courbd.ttf"); 
     miAlumno.setTypeface(miFont); 
     miFactu = (Spinner)findViewById(R.id.cbFact); 

     final EditText miCodigo = (EditText)findViewById(R.id.edCod); 

     btAlumno.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (miCodigo.getText().toString().length() < 6) { 
        Context context = getApplicationContext(); 
        CharSequence text = "EL CODIGO DEBE DE SER DE SEIS DIGITOS"; 
        int duration = Toast.LENGTH_SHORT; 
        Toast toast = Toast.makeText(context, text, duration); 
        toast.show(); 
       } else { 
        new JSONTask().execute("http://192.168.150.1/lfp/produc.php?ID=" + miCodigo.getText()); 

       } 
      } 
     }); 
    } 

    public class JSONTask extends AsyncTask<String, Integer, String>{ 

     @Override 
     protected String doInBackground(String... params) { 
      HttpURLConnection connection = null; 
      BufferedReader reader = null; 
      try{ 
       URL url = new URL(params[0]); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.connect(); 

       InputStream stream = connection.getInputStream(); 

       reader = new BufferedReader(new InputStreamReader(stream)); 

       StringBuffer buffer = new StringBuffer(); 

       String line = ""; 

       while ((line = reader.readLine()) != null){ 
        buffer.append(line); 
       } 

       String finalJson = buffer.toString(); 
       JSONArray parentArray = new JSONArray(finalJson); 
       JSONObject finalObject; 
       finalObject = parentArray.getJSONObject(0); 

       String estNombre = finalObject.getString("NAME"); 
       if (estNombre == null) { 
        miDato = "ALUMNO NO REGISTRADO"; 
       } else { 
        NumberFormat formato = new DecimalFormat("#,###"); 
        String estIdenti = finalObject.getString("ID"); 
        estIdenti = formato.format(Long.valueOf(estIdenti)); 

        // ID_PRO > 0 
        int num_fac = finalObject.length() - 2; 
        if (num_fac == 0) { 
         miDato = "ALUMNO:\n" + " " + estNombre + "\n " + estIdenti + "\n " + "- SIN MOVIMIENTO"; 
        } else { 
         // Load ID_PRO in ArrayList 
         num_fac = finalObject.length() - 3; 
         for (int i = 0; i < num_fac; i++){ 
          listFacturas.add(finalObject.getString("ID_PRO"+String.valueOf(i))); 
         } 
        } 
       } 
       return miDato; 

      } catch (MalformedURLException e){ 
       e.printStackTrace(); 
      } catch (IOException e){ 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } finally { 
       if(connection != null){ 
        connection.disconnect(); 
       } 
       try { 
        if (reader != null){ 
         reader.close(); 
        } 
       } catch (IOException e){ 
        e.printStackTrace(); 
       } 
      } 
      return null; 
     } 


     @Override 
     protected void onProgressUpdate(Integer... progress){ 

     } 


     @Override 
     protected void onPostExecute(String result){ 
      super.onPostExecute(result); 
      miAlumno.setText(result); // Displays NAME and ID in TextView 
     } 
    } 
} 

感謝。

回答

2

使用ArrayAdapter。

http://developer.android.com/reference/android/widget/ArrayAdapter.html

ArrayAdapter<String> my_adapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_spinner_item, listFacturas); 
+0

我有一個錯誤:「ArrayAdapter(com.windroid.lfp.Min.JSONTask,INT,java.util.ArrayList中)。我把保護無效onPostExecute(字符串結果)。 – user2683734

+0

@ user2683734這裏的正確方法是將''''JSONTask'''創建爲內部類。然後你就可以訪問Spinner''''miFactu''',你可以在''''onPostExecute()'' – kkaosninja

+0

@ user2683734更新你的問題解決了嗎? – kkaosninja