sql >> Base de Datos >  >> RDS >> Mysql

No se pueden obtener datos de la base de datos mysql en ListView en mi aplicación de Android

Están sucediendo algunas cosas aquí, intentaré abordar lo que pueda.

Esta entrada de registro es sospechosa:

03-22 22:30:42.860: E/ERROR(6055): Illegal character in query at index 53: http://necrecords.16mb.com/getproducts.php?password=A AA E EEE

Además, de este registro:

03-22 22:54:08.000: E/ERROR(7654): Error converting result java.lang.NullPointerException: lock == null

Puede ver que no está obteniendo una respuesta válida de esta página de PHP.

Este bloque de código genera una excepción:

//convert response to string
   try{
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
              sb.append(line + "\n");
        }
        is.close();         
        result=sb.toString();
   }catch(Exception e){
        Log.e("ERROR", "Error converting result "+e.toString());

Acabo de probar la URL en un navegador y funcionó, ya que el navegador codifica automáticamente la URL correctamente, así:

http://necrecords.16mb.com/getproducts.php?password=A%20AA%20E%20EEE

Creo que solo necesita codificar correctamente la URL ya que la cadena contiene espacios.

String query = URLEncoder.encode(mname, "utf-8");

httppost= new HttpPost("http://necrecords.16mb.com/getsongslist.php?password="+query);
response=httpclient.execute(httppost);     

En cuanto al problema de que su lista se duplique, puede borrar la lista cada vez que se ejecuta AsyncTask:

protected Void doInBackground(Void...params){ 

   InputStream is=null;
   String result="";
   try{

   records.clear(); //clear the list before re-populating

   httpclient=new DefaultHttpClient();
      httppost= new HttpPost("http://necrecords.16mb.com/getproducts.php");
   response=httpclient.execute(httppost);         
         HttpEntity entity = response.getEntity();
         is = entity.getContent();

   }catch(Exception e){

Una cosa más para mencionar, probablemente querrá crear un adaptador separado para cada actividad. Tal como está ahora, está utilizando el mismo adaptador para ambas actividades.

En el getView() de su adaptador , hace referencia a R.id.pro_name y R.id.pro_uprice , pero está utilizando este adaptador en sus dos actividades. ¿Sus dos actividades contienen estos elementos en su diseño xml?

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

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
     View itemView = inflater.inflate(groupid, parent, false);
     String[] row_items=records.get(position).split("__");
     TextView textName= (TextView) itemView.findViewById(R.id.pro_name);
     textName.setText(row_items[0]);
     TextView textPrice= (TextView) itemView.findViewById(R.id.pro_uprice);
     textPrice.setText(row_items[1]+"$");
     return itemView;
}