Autore Topic: mysql listview limitato  (Letto 282 volte)

Offline paul78

  • Utente normale
  • ***
  • Post: 359
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
mysql listview limitato
« il: 23 Settembre 2015, 17:13:22 CEST »
0
Ciao a tutti!

vorrei far apparire in una listview un gruppo di utenti dove hanno in comune lo stesso nome.

per apparire tutti gli utenti scrivo in php scrivo questo:

Codice (Java): [Seleziona]
<?php

$DB_USER='root';        
$DB_PASS='';      
$DB_HOST='localhost';    
$DB_NAME='db';
$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'");

$username = '"'.$mysqli->real_escape_string('nome').'"';
//$sql="SELECT * FROM utenti";
//qui cambio il select dove hanno tutti lo stesso nome
$sql="SELECT * FROM utenti WHERE nome = ?" +'$username';
$result=$mysqli->query($sql);
while($e=mysqli_fetch_assoc($result)){
     $output[]=$e;
}

print(json_encode($output));
$mysqli->close();

?>

in questo codice ho solo cambiato il select:

Per far apparire tutti gli utenti ovviamente senza il "WHERE" scrivo questo:

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

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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.JSONObject;
import android.os.AsyncTask;

public class ListUenti extends Activity{
Activity context;
HttpPost httppost;
StringBuffer buffer;
HttpResponse response;
HttpClient httpclient;
ProgressDialog pd;
CustomAdapter adapter;
ListView listProduct;
ArrayList<Persone> records;
String userString;

private static final String TAG_ID = "id";

        protected void onCreate(Bundle savedInstanceState) {
                //TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.edit_utenti);
               
                Intent i = getIntent();
                userString = i.getStringExtra("nome");

                Toast.makeText(getApplicationContext(), userString, Toast.LENGTH_LONG).show();
               
                context=this;
                records=new ArrayList<Persone>();
                listProduct=(ListView)findViewById(R.id.listView1);
                adapter=new CustomAdapter(context, R.layout.row_utenti, R.id.titolo_text, records);
                adapter.notifyDataSetChanged();
                listProduct.setAdapter(adapter);
                listProduct.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();
                                final String nome_artista = records.get(position).getNome();
                                String email = records.get(position).getEmail();
                                final String titolo = records.get(position).getTitolo();
                               
                                String idString = String.valueOf(num);
                               
                        }
                });
        }
        public void onStart(){
                super.onStart();
                //execute background task
                BackTask bt=new BackTask();
                bt.execute();
       
        }
       
        //background process to make a request to server and list product information
        private class BackTask extends AsyncTask<Void,Void,Void>{
               
                protected void onPreExecute(){
                        super.onPreExecute();
                        pd = new ProgressDialog(context);
                        pd.setTitle("Retrieving data");
                        pd.setMessage("Please wait.");
                        pd.setCancelable(true);
                        pd.setIndeterminate(true);
                        pd.show();
       
                }
               
                protected Void doInBackground(Void...params){          
                        InputStream is=null;
                        String result="";
                        try{
                       
                        httpclient=new DefaultHttpClient();
                        httppost= new HttpPost("http://192.168.0.13/utenti/viewUtenti.php");
                        response=httpclient.execute(httppost);
                        HttpEntity entity = response.getEntity();
                        // Get our response as a String.
                        is = entity.getContent();
                       
                        }catch(Exception e){
                                if(pd!=null)
                                pd.dismiss(); //close the dialog if error occurs
                                Log.e("ERROR", e.getMessage());
                        }
               
                        //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());
                       
                        }
                       
                        //parse json data
                        try{
                                // Remove unexpected characters that might be added to beginning of the string
                                result=result.substring(result.indexOf("["));
                                JSONArray jArray =new JSONArray(result);
                                for(int i=0;i<jArray.length();i++){
                                        //JSONObject json_data =jArray.getJSONObject(i);
                                int id = 3;
                                String s1 = String.valueOf(id);
                                        JSONObject json_data =jArray.getJSONObject(i);
                                        Persone p=new Persone();                               
                                        p.setId(json_data.getInt("id"));
                                        p.setNome(json_data.getString("nome"));
                                       
                                        //p.setNome(userString);
                                        p.setEmail(json_data.getString("email"));      
                                        p.setTitolo(json_data.getString("titolo"));
                                       
                                        records.add(p);
                               
                                }                                              
                        }catch(Exception e){
                                Log.e("ERROR", "Error pasting data "+e.toString());                    
                        }                      
                        return null;
                }
               
               
                protected void onPostExecute(Void result){
               
                if(pd!=null) pd.dismiss(); //close dialog
                Log.e("size", records.size() + "");
                adapter.notifyDataSetChanged(); //notify the ListView to get new records
               
                }
       
        }
        public class CustomComparator implements Comparator<Persone> {
        public int compare(Persone o1, Persone o2) {
                        return  o2.getId();
            //return o1.getId() > o2.getId();
        }
    }
}


con questo codice faccio apparire l'intera lista, ora come faccio ad apparire solo gli utenti con lo stesso"userString"?
tutti possiamo programmare...basta volerlo!!!

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:mysql listview limitato
« Risposta #1 il: 23 Settembre 2015, 17:17:01 CEST »
0
Non puoi semplicemente filtrare la lista di utenti (intendo la lista java) e poi notificare all adapter?

Offline paul78

  • Utente normale
  • ***
  • Post: 359
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:mysql listview limitato
« Risposta #2 il: 23 Settembre 2015, 17:30:35 CEST »
0
e come posso fare??



Post unito: 23 Settembre 2015, 17:36:23 CEST
come faccio a filtrare la lista degli utenti?

help!
« Ultima modifica: 23 Settembre 2015, 17:36:23 CEST da paul78, Reason: Merged DoublePost »
tutti possiamo programmare...basta volerlo!!!