Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158

    [Java][Android] Listview Custom Adapter risorsa esterna

    Buona sera, come da titolo sto tentando di riempire una listView con un custom adapter da un Oggetto ArrayList Ricevuto da un socket server scritto in Java ma il Client Android Non trova la classe inviata dal Socket :

    Server:

    codice:
    public class Server {
    
        static ArrayList<Busta> prova;
        
    
    
        public static void main(String srgs[]) {
    
    
            int count = 0;
            
            initList();
    
    
            //hard code to use port 8080
            try (ServerSocket serverSocket = new ServerSocket(6789)) {
                
                System.out.println("I'm waiting here: " + serverSocket.getLocalPort());
                
                while (true) {
                    
                    try {
                        Socket socket = serverSocket.accept();
                                
                        count++;
                        System.out.println("#" + count + " from "
                                + socket.getInetAddress() + ":" 
                                + socket.getPort());
                        
                        HostThread myHostThread = new HostThread(socket, count);
                        myHostThread.start();
                        
                    } catch (IOException ex) {
                        System.out.println(ex.toString());
                    }
                }
            } catch (IOException ex) {
                System.out.println(ex.toString());
            }
        }
        
        private static class HostThread extends Thread{
            
            private Socket hostThreadSocket;
            int cnt;
            
            HostThread(Socket socket, int c){
                hostThreadSocket = socket;
                cnt = c;
            }
    
    
            @Override
            public void run() {
                
                OutputStream outputStream;
                try {
                    outputStream = hostThreadSocket.getOutputStream();
                    try (ObjectOutputStream objectOutputStream = 
                        new ObjectOutputStream(outputStream)) {
                            objectOutputStream.writeObject(prova);
                    }
                } catch (IOException ex) {
                    System.out.println(ex.toString());
                }finally{
                    try {
                        hostThreadSocket.close();
                    } catch (IOException ex) {
                        System.out.println(ex.toString());
                    }
                }
    
    
            }
        }
        
        private static void initList(){
            
           
          
             
            try
            {
                prova = new ArrayList<Busta>();
                String DATABASE_URL = "jdbc:ucanaccess:///OneDrive//Programmazione//Android//dati.mdb;password=gmpa;memory=false";
                
                Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
                Connection conn = DriverManager.getConnection(DATABASE_URL);
                System.out.println(conn);
                Statement s = conn.createStatement();
               
                ResultSet rs = s.executeQuery("SELECT * FROM [tabripa]");
                while (rs.next()) {
                    
                    
                     //prova.add(rs.getString("Nbusta"));
                     prova.add(new Busta(rs.getString("Nbusta"),rs.getNString("Nome")));
                 
                    
           
                }
                
               
    
    
                s.close();
                conn.close();
            }
            catch(Exception ex)
            {
                ex.printStackTrace();
            }
            
            
        }
       
    }
    Il metodo del client che riceve i dati dell'ArrayList:

    codice:
    class ClientThread extends AsyncTask{
    
    
        //ArrayAdapter<String> arrayAdapter;
    AdaperRisultato arrayAdapter = null;
    
        @Override
    protected Object doInBackground(Object[] objects) {
    
    
            try {
                Socket socket = new Socket("192.168.3.199",porta);
    
                try {
                    ObjectOutputStream objectOutput = new ObjectOutputStream(socket.getOutputStream());
                    ObjectInputStream objectInput = new ObjectInputStream(socket.getInputStream()); //Error Line!
    try {
                        Object object = objectInput.readObject();
    
                        arrayBusta = (ArrayList<Busta>) object;
    
                        for (int i = 0; i < arrayBusta.size(); i++) {
                            // String get = arrayBusta.get(i);
    System.out.println(arrayBusta.get(i));
    
                            //List list = new LinkedList();
                            //list.add(new Busta(arrayBusta));
    }
    
    
    
                    } catch (ClassNotFoundException e) {
                        System.out.println("Classe Non esistente");
                        e.printStackTrace();
                    }
                } catch (IOException e) {
                    System.out.println("Lettura Socket Con Problemi");
                    e.printStackTrace();
                }
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return arrayBusta;
        }
    
        @Override
    protected void onPostExecute(Object o) {
            ArrayList<Busta> listaAdaptor = Busta.fromJson(arrayBusta);
            arrayAdapter = new AdaperRisultato(MainActivity.this,R.layout.adapter_row, listaAdaptor);
            lista.setAdapter(arrayAdapter);
    
        }
    
    }
    
    
    }
    :


    Bisognerebbe che vi mandassi sia il Server e il Client per capire bene perchè ci mancano i modelli.


    Errore:

    codice:
    /System.err: java.lang.ClassNotFoundException: provaserverclient3.BustaW/System.err:     at java.lang.Class.classForName(Native Method)
    W/System.err:     at java.lang.Class.forName(Class.java:400)
    W/System.err:     at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:626)
    W/System.err:     at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613)
    W/System.err:     at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
    W/System.err:     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1772)
    W/System.err:     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    W/System.err:     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
    W/System.err:     at java.util.ArrayList.readObject(ArrayList.java:763)
    W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
    W/System.err:     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1006)
    W/System.err:     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1894)
    W/System.err:     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1799)
    W/System.err:     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    W/System.err:     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
    W/System.err:     at com.example.nio74.client.MainActivity$ClientThread.doInBackground(MainActivity.java:92)
    W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:304)
    W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
    W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    W/System.err:     at java.lang.Thread.run(Thread.java:761)
    W/System.err: Caused by: java.lang.ClassNotFoundException: Didn't find class "provaserverclient3.Busta" on path: DexPathList[[dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-support-annotations-25.1.0_18468df7b6490749d338021d6a3bd505913b26ce-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-com.android.support-support-vector-drawable-25.1.0_61c5c034009fb96d470a84e27ffe016f04cdc494-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-com.android.support-support-v4-25.1.0_a683b53f0f348e2797ad85f4fa61d2d3902b1eeb-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-com.android.support-support-media-compat-25.1.0_c8ae95ba217fcf1c9ab7ad7524b62216ac9045e8-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-com.android.support-support-fragment-25.1.0_4a4787580f755f8e0128468ecd8cb3b0bf94a90b-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-com.android.support-support-core-utils-25.1.0_570094e70a8f013e44b6d3a6698ed4d5b7b8defe-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-com.android.support-support-core-ui-25.1.0_cd0bb001a93f1e24a1feac8c98b90329db02bcf4-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-com.android.support-support-compat-25.1.0_6e16847b37fb1ae872982c138fa06dd1e2289d50-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-com.android.support-appcompat-v7-25.1.0_e270828f2f74a9e6555959501d393eb5ff2812b2-classes.dex", dex file "/data/data/com.example.nio74.client/files/instant-run/dex/slice-com.android.support-animated-vector-drawable-25.1.0_20db7c43375e6d633a8498022b07bfb62cfb3a13-classes.dex"],nativeLibraryDirectories=[/data/app/com.example.nio74.client-2/lib/x86, /system/lib, /vendor/lib]]
    W/System.err:     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    W/System.err:     at com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader.findClass(IncrementalClassLoader.java:90)
    W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
    W/System.err:     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    W/System.err: 	... 22 more
    Ultima modifica di Nio74; 07-01-2017 a 20:32

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Vi posto il link dove ho caricato sia Server Con Client Java e Client Android:
    https://drive.google.com/file/d/0B6t...ew?usp=sharing

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Sono arrivato a capire che per deserializzare in android :
    1) devo avere il stesso nome del package del Server, e qui ho risolto.
    2) ora c'è il problema del ProGuard che non so come risolvere.
    Ultima modifica di Nio74; 08-01-2017 a 09:05

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Ragazzi ho risolto tutto da solo è tre giorni che ci perdo la testa,In android bisogna fare un Package dentro la root Java.

    Cioè Java/Miopackage

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.