2016-08-13 3 views
0

Im пытается заполнить свой списокView данными из моей базы данных. У меня есть tbl_table с только tableID и tableCapacity. Я попробовал запустить phpcodes для почтальона, а также при печати в журнале, и кажется, что проблем нет, поэтому я понял, что это должно быть из-за того, как я конвертирую Json-код. я продолжаю получать эту ошибку. спасибо заранее .. им работает мои коды в андроида 4.1.2 API 16.Заполнение ListView с данными из базы данных mySQL

FATAL EXCEPTION: main 

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 
    at com.google.gson.Gson.fromJson(Gson.java:815) 
    at com.google.gson.Gson.fromJson(Gson.java:768) 
    at com.google.gson.Gson.fromJson(Gson.java:717) 
    at com.kosalgeek.android.json.JsonConverter.toArrayList(JsonConverter.java:42) 
    at markjon.nobleza.qaldi.Table.onResponse(Table.java:51)                
    at markjon.nobleza.qaldi.Table.onResponse(Table.java:20) 

Вот мои коды:

Table.class

public class Table extends AppCompatActivity implements Response.Listener<String> { 

    final String TAG = this.getClass().getSimpleName(); 

    ListView tableLV; 

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

     String URL = "http://192.168.1.10/myDB/table.php"; 

     StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, this, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Toast.makeText(getApplicationContext(), "Error retrieving data", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest); 

     tableLV = (ListView)findViewById(R.id.tableList); 

    } 

    @Override 
    public void onResponse(String response) { 
     Log.d(TAG, response); 


     ArrayList<myTable> tableList = new JsonConverter<myTable>().toArrayList(response, myTable.class); 

     BindDictionary<myTable> dict = new BindDictionary<>(); 
     dict.addStringField(R.id.tableNum, new StringExtractor<myTable>() { 
      @Override 
      public String getStringValue(myTable item, int position) { 
       return "" + item.tableID; 
      } 
     }); 

     dict.addStringField(R.id.tableCap, new StringExtractor<myTable>() { 
      @Override 
      public String getStringValue(myTable item, int position) { 
       return "" + item.tableCapacity; 
      } 
     }); 

     FunDapter<myTable> adapter = new FunDapter<>(getApplicationContext(), tableList, R.layout.table_layout, dict); 

     tableLV.setAdapter(adapter); 

    } 
} 

myTable.class

public class myTable { 

    @SerializedName("tableID") 
    public int tableID; 
    @SerializedName("tableCapacity") 
    public int tableCapacity; 

} 

Точка ошибки на этих двух линиях:

public class Table extends AppCompatActivity implements Response.Listener<String> 

ArrayList<myTable> tableList = new JsonConverter<myTable>().toArrayList(response, myTable.class); 

ответ

0

Переменная response должна быть правильной строкой json, но она не имеет правильного формата. Согласно сообщению об ошибке и, как ожидается, это будет json-массив, эта строка json должна начинаться с символа массива, то есть [ и заканчивается ]. Я предлагаю вам использовать точку прерывания в этой строке и оценить значение переменной response. Вы можете использовать online json formatters/validators, чтобы узнать, что не так в этой строке json. Затем вы должны изменить логику метода, который создает этот json.

Смежные вопросы