Autore Topic: visualizzare row selezionato!  (Letto 521 volte)

Offline paul78

  • Utente normale
  • ***
  • Post: 359
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
visualizzare row selezionato!
« il: 09 Agosto 2015, 00:11:11 CEST »
0
Ciao a tutti!

stò cercando di creare un "crud" con json php e mysql ma non riesco a far visualizzare la row selezionata da una listview.

in php ho scritto questo:

Codice (Java): [Seleziona]
<?php


// array for JSON response
$response = array();


$DB_USER='root';        
$DB_PASS='';      
$DB_HOST='localhost';    
$DB_NAME='android_mysql';
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
/* check connection */
if (mysqli_connect_errno()) {
   printf("Connect failed: %s\n", mysqli_connect_error());
   exit();
}
$mysqli->query("SET NAMES 'utf8'");

// check for post data
if (isset($_GET["id"])) {
    $id = $_GET['id'];

    // get a product from products table
    $result = mysql_query("SELECT *FROM persone2 WHERE id = "+ $id);

    if (!empty($result)) {
        // check for empty result
        if (mysql_num_rows($result) > 0) {

            $result = mysql_fetch_array($result);

            $product = array();
            $product["id"] = $result["id"];
            $product["nome"] = $result["nome"];
            $product["cognome"] = $result["cognome"];
            $product["messaggio"] = $result["messaggio"];
            // success
            $response["success"] = 1;

            // user node
            $response["product"] = array();

            array_push($response["product"], $product);

            // echoing JSON response
            echo json_encode($response);
        } else {
            // no product found
            $response["success"] = 0;
            $response["message"] = "No product found";

            // echo no users JSON
            echo json_encode($response);
        }
    } else {
        // no product found
        $response["success"] = 0;
        $response["message"] = "No product found";

        // echo no users JSON
        echo json_encode($response);
    }
} else {
    // required field is missing
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    // echoing JSON response
    echo json_encode($response);
}
?>

in android per ottenere l'id della row dalla listview ed inviarla all'activity dove dovrebbe far apparire la row selezionata scrivo questo:
Codice (Java): [Seleziona]
listPersone.setOnItemClickListener(new OnItemClickListener() { 
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                //String idString = ((TextView) view.findViewById(R.id.id_text)).getText().toString();
                                int num = records.get(position).getId();
                                TextView textId = (TextView) view.findViewById(R.id.id_text);
                                String idString = Integer.toString(num);
                                Toast.makeText(getApplicationContext(), idString, Toast.LENGTH_LONG).show();
                                Intent in = new Intent(getApplicationContext(), EditDataActivity.class);
                                in.putExtra("id", idString);                           
                                startActivityForResult(in, 100);
                               
                        }
                });

per ricevere l'id inviato per far apparire la row selezionata scrivo questo:

Codice (Java): [Seleziona]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class EditDataActivity extends Activity implements OnClickListener {

        EditText e_id, e_nome, e_cognome, e_messaggio;
        Button btnUpdateEdit, btnDeleteEdit;
       
        Integer id = 0;
        //private static final String TAG_ID = "id";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_edit);
               
                e_id = (EditText)findViewById(R.id.e_id);
                e_nome = (EditText)findViewById(R.id.e_nome);
                e_cognome = (EditText)findViewById(R.id.e_cognome);
                e_messaggio = (EditText)findViewById(R.id.e_messaggio);
               
               
                Intent i = getIntent();
                String idString = i.getStringExtra("id");
                               
                Toast.makeText(getApplicationContext(), idString, Toast.LENGTH_LONG).show();
                readData(Integer.parseInt(idString));
               
               
                btnUpdateEdit = (Button)findViewById(R.id.btnUpdateEdit);
                btnDeleteEdit = (Button)findViewById(R.id.btnDeleteEdit);
                btnUpdateEdit.setOnClickListener(this);
                btnDeleteEdit.setOnClickListener(this);
               
        }
       
        private void readData(Integer st_id){
                ReadData task1 = new ReadData();
                //task1.execute(new String[]{"http://192.168.0.5/android_crud/readjsonbyid.php?id=2" });
                task1.execute(new String[]{"http://192.168.0.5/android_crud/getRecipeDetail.php?id="+st_id});
        }
       
        private class ReadData extends AsyncTask<String, Void, Boolean>{

                ProgressDialog dialog = new ProgressDialog(EditDataActivity.this);
                @Override
                protected void onPreExecute() {
                        dialog.setMessage("Reading Data...");
                        dialog.show();
                }

                String text = "";
               
                ArrayList<String> list1;
                Product s1;
                @Override
                protected Boolean doInBackground(String... urls) {
                       
                       
                        InputStream is1;                               
                       
                        for(String url1 : urls){
                                //Read from web to InputStream
                                try {                                  
                                        HttpClient client = new DefaultHttpClient();
                                        HttpPost post = new HttpPost(url1);                                    
                                        HttpResponse response = client.execute(post);
                                        is1 = response.getEntity().getContent();
                                       
                                } catch (ClientProtocolException e) {
                                        Toast.makeText(EditDataActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                                        return false;
                                } catch (IOException e) {
                                        Toast.makeText(EditDataActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                                        return false;
                                }
                                //end of Read from web to InputStream
                               
                                //Convert from InputStream to String Text
                                BufferedReader reader;                         
                                try {
                                        reader = new BufferedReader(new InputStreamReader(is1,"iso-8859-1"), 8);
                                        String line = null;
                                        while ((line = reader.readLine()) != null) {
                                                text += line + "\n";
                                        }
                                        is1.close();
                                } catch (UnsupportedEncodingException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                //end of Convert from InputStream to String Text
                               
                                //Convert from Text to JSON and add to ArrayList list1
                                list1 = new ArrayList<String>();
                                try {
                                        JSONArray jArray = new JSONArray(text);
                                        for(int i=0;i<jArray.length();i++){
                                                JSONObject jsonData = jArray.getJSONObject(i);                                         
                                                s1 = new Product();
                                                s1.setId(jsonData.getInt("id"));
                                                s1.setNome(jsonData.getString("nome"));
                                                s1.setCognome(jsonData.getString("cognome"));
                                                s1.setMessaggio(jsonData.getString("messaggio"));
                                               
                                        }
                                } catch (JSONException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                //end of Convert from Text to JSON and add to ArrayList list1
                        }
                       
                        return true;
                }
               
                @Override
                protected void onPostExecute(Boolean result) {
                        if(result == true){            
                                e_id.setText(s1.getId());
                                e_nome.setText(s1.getNome());                          
                                e_cognome.setText(s1.getCognome());
                                e_messaggio.setText(s1.getMessaggio());
                        }
                        else{
                                Toast.makeText(EditDataActivity.this, "Error", Toast.LENGTH_LONG).show();
                        }
                        dialog.dismiss();
                }
               
        }

        @Override
        public void onClick(View sender) {
                if(sender.getId() == R.id.btnUpdateEdit){
                        UpdateData taskUpdate = new UpdateData();
                        taskUpdate.execute(new String[]{""});
                }
                else if(sender.getId() == R.id.btnDeleteEdit){
                        Builder msg = new AlertDialog.Builder(EditDataActivity.this);
                        msg.setTitle("Delete Confirm");
                        msg.setMessage("Are you sure to delete it?");
                        msg.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
                               
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                        DeleteData taskDelete = new DeleteData();
                                        taskDelete.execute(new String[]{""});
                                       
                                }
                        });
                        msg.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                               
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                        //No Code
                                       
                                }
                        });
                        msg.show();

                }
               
        }
       
        private class UpdateData extends AsyncTask<String, Void, Boolean>{

                @Override
                protected Boolean doInBackground(String... params) {
                        // TODO Auto-generated method stub
                        return null;
                }
               
        }
       
        private class DeleteData extends AsyncTask<String, Void, Boolean>{

                @Override
                protected Boolean doInBackground(String... params) {
                        // TODO Auto-generated method stub
                        return null;
                }
               
        }

       
}

l'errore lo visualizza su questo metodo:

@Override
      protected void onPostExecute(Boolean result) {
         if(result == true){      
            e_id.setText(s1.getId());
            e_nome.setText(s1.getNome());            
            e_cognome.setText(s1.getCognome());
            e_messaggio.setText(s1.getMessaggio());
         }
         else{
            Toast.makeText(EditDataActivity.this, "Error", Toast.LENGTH_LONG).show();
         }
         dialog.dismiss();
      }
      
   
come mai??

dove sbaglio???

non risco a capire il problema  :-(
tutti possiamo programmare...basta volerlo!!!

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:visualizzare row selezionato!
« Risposta #1 il: 09 Agosto 2015, 01:18:48 CEST »
0
Il log cosa dice? Vedi alcuni probabili errori. Intanto io per convertire un intero in stringa faccio String.valueOf(intero). Tu fai un Integer.toString().
 Inoltre in un ciclo dove scorri un array...OK un json array, cosa serve sovrascrivere sempre s1? Al massimo dovrai avere una lista di Product.