Autore Topic: ListView non mostra elementi  (Letto 393 volte)

Offline ale99

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GoClever Insignia x5
  • Sistema operativo:
    Windows 8.0
ListView non mostra elementi
« il: 26 Ottobre 2014, 22:03:40 CET »
0
Ciao a tutti!
Sono nuovo del forum e della programmazione Android, quindi perdonatemi per cavolate che scrivo ;-)

Stò realizzando un'app che tiene traccia delle bollette ( gas, luce, ecc.. ) di un individuo.

ho parecchi bug e sono ancora all'inizio, ma ho un problemone che non riesco a risolvere...

Per spiegare provo a fare un esempio di utilizzo:

1) avvio l'app che, dopo aver caricato i dati da file, li mostra tramite una ListView



2) premo "Nuova" ( ma il problema si verifica anche con "Cerca" e modifica ) e inserisco i dati

3) premo "Conferma" e ritorno alla View iniziale --> la ListView è misteriosamente vuota...  ??? :'(

4) riavvio l'app --> tutto apposto ( viene anche visualizzata la aggiunta/modifica/eliminazione effettuata )



LogCat ( solo tag "MainActivity" )
Citazione
10-26 21:59:22.400  22977-22977/ale.bollette I/MainActivity﹕ onCreate()
10-26 21:59:22.586  22977-22977/ale.bollette I/MainActivity﹕ R.layout.activity_main is new screen layout
10-26 21:59:22.590  22977-22977/ale.bollette I/MainActivity﹕ loaded file /storage/sdcard0/salvataggi.txt
10-26 21:59:22.591  22977-22977/ale.bollette I/MainActivity﹕ initial view ready!
10-26 21:59:22.591  22977-22977/ale.bollette I/MainActivity﹕ list ****************
10-26 21:59:22.592  22977-22977/ale.bollette I/MainActivity﹕ nome=bolletta   prezzo=10.0   scadenza=2014-10-10   isPagata=false
10-26 21:59:22.592  22977-22977/ale.bollette I/MainActivity﹕ nome=bolletta37   prezzo=37.0   scadenza=0007-07-06   isPagata=false
10-26 21:59:22.592  22977-22977/ale.bollette I/MainActivity﹕ nome=hsvs   prezzo=37635.0   scadenza=0001-01-01   isPagata=false
10-26 21:59:22.592  22977-22977/ale.bollette I/MainActivity﹕ nome=hsvs   prezzo=37.0   scadenza=0001-01-01   isPagata=false
10-26 21:59:22.593  22977-22977/ale.bollette I/MainActivity﹕ nome=gebs   prezzo=6.0   scadenza=0001-01-01   isPagata=false
10-26 21:59:22.593  22977-22977/ale.bollette I/MainActivity﹕ nome=gsvqy   prezzo=73.0   scadenza=0001-04-02   isPagata=false
10-26 21:59:22.593  22977-22977/ale.bollette I/MainActivity﹕ nome=fjdjysym   prezzo=36.0   scadenza=0001-01-01   isPagata=false
10-26 21:59:22.593  22977-22977/ale.bollette I/MainActivity﹕ nome=anddev.it   prezzo=1000.0   scadenza=2014-10-26   isPagata=false
10-26 21:59:22.593  22977-22977/ale.bollette I/MainActivity﹕ nome=anddev.it   prezzo=100.0   scadenza=2014-01-01   isPagata=false
10-26 21:59:22.594  22977-22977/ale.bollette I/MainActivity﹕ **************
10-26 21:59:37.167  22977-22977/ale.bollette I/MainActivity﹕ onActivityResult()
10-26 21:59:37.180  22977-22977/ale.bollette I/MainActivity﹕ create finished
10-26 21:59:37.180  22977-22977/ale.bollette I/MainActivity﹕ list ****************
10-26 21:59:37.181  22977-22977/ale.bollette I/MainActivity﹕ nome=bolletta   prezzo=10.0   scadenza=2014-10-10   isPagata=false
10-26 21:59:37.181  22977-22977/ale.bollette I/MainActivity﹕ nome=bolletta37   prezzo=37.0   scadenza=0007-07-06   isPagata=false
10-26 21:59:37.183  22977-22977/ale.bollette I/MainActivity﹕ nome=hsvs   prezzo=37635.0   scadenza=0001-01-01   isPagata=false
10-26 21:59:37.184  22977-22977/ale.bollette I/MainActivity﹕ nome=hsvs   prezzo=37.0   scadenza=0001-01-01   isPagata=false
10-26 21:59:37.184  22977-22977/ale.bollette I/MainActivity﹕ nome=gebs   prezzo=6.0   scadenza=0001-01-01   isPagata=false
10-26 21:59:37.184  22977-22977/ale.bollette I/MainActivity﹕ nome=gsvqy   prezzo=73.0   scadenza=0001-04-02   isPagata=false
10-26 21:59:37.184  22977-22977/ale.bollette I/MainActivity﹕ nome=fjdjysym   prezzo=36.0   scadenza=0001-01-01   isPagata=false
10-26 21:59:37.184  22977-22977/ale.bollette I/MainActivity﹕ nome=anddev.it   prezzo=1000.0   scadenza=2014-10-26   isPagata=false
10-26 21:59:37.185  22977-22977/ale.bollette I/MainActivity﹕ nome=anddev.it   prezzo=100.0   scadenza=2014-01-01   isPagata=false
10-26 21:59:37.185  22977-22977/ale.bollette I/MainActivity﹕ nome=hdbsi   prezzo=18.0   scadenza=0002-02-02   isPagata=false
10-26 21:59:37.186  22977-22977/ale.bollette I/MainActivity﹕ **************
10-26 21:59:40.684  22977-22977/ale.bollette I/MainActivity﹕ onDestroy()


Codice (Java): [Seleziona]
MainActivity.java

package ale.bollette;

        import android.app.Activity;
        import android.app.Application;
        import android.content.Context;
        import android.content.Intent;
        import android.os.Bundle;
        import android.os.Environment;
        import android.util.Log;
        import android.view.LayoutInflater;
        import android.view.Menu;
        import android.view.MenuInflater;
        import android.view.MenuItem;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.AdapterView;
        import android.widget.ArrayAdapter;
        import android.widget.Button;
        import android.widget.EditText;
        import android.widget.ListView;
        import android.widget.RadioButton;
        import android.widget.TextView;
        import android.widget.Toast;

        import java.io.File;
        import java.io.FileNotFoundException;
        import java.io.FileReader;
        import java.io.FileWriter;
        import java.io.IOException;
        import java.sql.Date;
        import java.util.LinkedHashMap;
        import java.util.LinkedList;
        import java.util.List;
        import java.util.Scanner;


public class MainActivity extends Activity {

    LinkedHashMap<String, Bolletta> hashMap;
    LinkedList<Bolletta> list;
    LinkedList<Bolletta> searchResult;
    int resultsMode;

    ListView listView;
    MyArrayAdapter adapter;

    public final static int REQUESTCODE_nuovo = 1;
    public final static int REQUESTCODE_cerca = 2;
    public final static int REQUESTCODE_modifica = 3;

    public final static int RESPONSECODE_annulla = 1;
    public final static int RESPONSECODE_conferma = 2;
    public final static int RESPONSECODE_elimina = 3;

    public final static int RESULTS_search = 1;
    public final static int RESULTS_view = 2;

    Context context;

    File file;


    public MainActivity(){

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("MainActivity", "onCreate()");

        context = this;

        file = new File(Environment.getExternalStorageDirectory(),getString(R.string.fileName));

        resultsMode = RESULTS_view;

        setContentView(R.layout.activity_main);
        Log.i("MainActivity", "R.layout.activity_main is new screen layout");

        list = new LinkedList<Bolletta>();

        try {
            if(!file.exists()) {
                file.createNewFile();
                Log.i("MainActivity", "created file "+file.getAbsolutePath());
            }
            else {
                loadFile();
                Log.i("MainActivity", "loaded file "+file.getAbsolutePath());
            }
        } catch (IOException e) {
            Log.i("MainActivity", "IOException " + e.toString());
            finish();
        }

        listView = (ListView)findViewById(R.id.listaRisultati);

        adapter = new MyArrayAdapter(MainActivity.this, R.layout.bolletta, list);

        listView.setAdapter(adapter);

        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int pos, long l) {
                Log.i("MainActivity", "listView.onItemLongClickListener *******");
                Log.i("MainActivity", "adapterView : "+ adapterView.toString());
                Log.i("MainActivity", "pos : "+ pos);

                Bolletta b = list.get(pos);

                Intent intent = new Intent(context, NuovoRecord.class);

                intent.putExtra("position", pos);
                intent.putExtra("requestCode", REQUESTCODE_modifica);

                intent.putExtra("bolletta", b);

                Log.i("MainActivity", "Bolletta : " + b.toString());
                Log.i("MainActivity", "********");

                startActivityForResult(intent, REQUESTCODE_modifica);

                return true;
            }
        });

        Log.i("MainActivity", "initial view ready!");

        printList(list);
    }

    @Override
    protected void onDestroy(){
        Log.i("MainActivity", "onDestroy()");

        super.onDestroy();
    }

    public void loadFile() throws FileNotFoundException {
        Scanner scanner = new Scanner(file);

        while(scanner.hasNextLine()) {
            String[] line = scanner.nextLine().split("~");
            Bolletta bolletta = new Bolletta(line[0], Float.valueOf(line[1]), new Date(Long.valueOf(line[2])), (line[3].equals("true") ? true : false));

            list.add(bolletta);
        }
    }

    public boolean saveFile() {
        try {
            FileWriter writer = new FileWriter(file);

            for (Bolletta b : list) {
                writer.write(b.getNome() + "~" + b.getPrezzo() + "~" + b.getScadenza().getTime() + "~" + ((b.isPagata() == true) ? "true" : "false")
                        + System.getProperty("line.separator"));
            }

            writer.flush();
            writer.close();

        } catch(IOException ex){
            ex.printStackTrace();
            return false;
        }

        return true;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Log.i("MainActivity", "onActivityResult()");

        try {

            if (resultCode == MainActivity.RESPONSECODE_annulla) {
                Log.i("MainActivity", "annulla");
                return;
            }

            if (data == null) {
                Log.e("MainActivity", "data is null");
                return;
            }

            Bolletta bolletta;

            switch (requestCode) {
                case REQUESTCODE_nuovo:

                    bolletta = (Bolletta) data.getSerializableExtra("bolletta");
                    if(bolletta == null){
                        return;
                    }

                    setContentView(R.layout.activity_main);

                    adapter.add(bolletta);
                    listView.setAdapter(adapter);

                    saveFile();

                    resultsMode = RESULTS_view;

                    Log.i("MainActivity", "create finished");
                    printList(list);

                    return;

                case REQUESTCODE_modifica:

                    if (resultCode == MainActivity.RESPONSECODE_elimina) {
                        int position = data.getIntExtra("position", -1);
                        if (position != -1) {

                            setContentView(R.layout.activity_main);

                            adapter.remove(position);
                            listView.setAdapter(adapter);

                            saveFile();

                            Log.i("MainActivity", "delete finished");
                            printList(list);

                            resultsMode = RESULTS_view;
                        } else {
                            return;
                        }

                        break;
                    }

                    int pos = data.getIntExtra("position", -1);
                    if (pos == -1) {
                        break;
                    }

                    bolletta = (Bolletta) data.getSerializableExtra("bolletta");
                    if(bolletta == null){
                        return;
                    }

                    setContentView(R.layout.activity_main);

                    adapter.remove(bolletta);
                    adapter.add(pos, bolletta);
                    listView.setAdapter(adapter);

                    saveFile();

                    resultsMode = RESULTS_view;

                    Log.i("MainActivity", "edit finished");
                    printList(list);

                    return;

                case REQUESTCODE_cerca:

                    if (data == null) {
                        break;
                    }

                    searchResult = new LinkedList<Bolletta>(list);

                    Bolletta b = (Bolletta) data.getSerializableExtra("bolletta");
                    if(b == null){
                        return;
                    }

                    if (b.getNome() != null && !b.getNome().equals("")) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (t.getNome().contains(b.getNome())) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    if (b.getPrezzo() != -1) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (t.getPrezzo() == b.getPrezzo()) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    if (b.getScadenza() != null) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (t.getScadenza().equals(b.getScadenza())) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    boolean isPagata = data.getBooleanExtra("isPagata", false);

                    if(isPagata) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (t.isPagata()) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    boolean isNotPagata = data.getBooleanExtra("isPagata", false);

                    if(isNotPagata) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (!t.isPagata()) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    resultsMode = RESULTS_search;

                    setContentView(R.layout.activity_main);

                    adapter = new MyArrayAdapter(MainActivity.this, R.layout.bolletta, searchResult);
                    listView.setAdapter(adapter);

                    Log.i("MainActivity", "search finished");
                    printList(searchResult);

                    return;
            }

            setContentView(R.layout.activity_main);

        } catch (Exception e){
            Log.e("MainActivity", e.toString());
        }

    }

    public void onButtonClick(View view){
        Intent intent;

        switch(view.getId()){
            case R.id.BUTTON_cerca:
                intent = new Intent(context, NuovoRecord.class);
                intent.putExtra("requestCode", REQUESTCODE_cerca);
                startActivityForResult(intent, REQUESTCODE_cerca);
                break;

            case R.id.BUTTON_ordina:

                break;

            case R.id.BUTTON_nuova:
                intent = new Intent(context, NuovoRecord.class);
                intent.putExtra("requestCode", REQUESTCODE_nuovo);
                startActivityForResult(intent, REQUESTCODE_nuovo);
                break;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater= getMenuInflater();
        inflater.inflate(R.menu.action_bar, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            case R.id.MENU_esporta:

                return true;
            case R.id.MENU_importa:

                return true;
            default:
                return super.onOptionsItemSelected(item);

        }

    }

    public void printList(List<Bolletta> list){
        Log.i("MainActivity", "list ****************");

        for(Bolletta b : list){
            Log.i("MainActivity", b.toString());
        }

        Log.i("MainActivity", "**************");
    }

    @Override
    public void onBackPressed() {
        if(resultsMode == RESULTS_search){
            resultsMode = RESULTS_view;

            adapter = new MyArrayAdapter(MainActivity.this, R.layout.bolletta, list);
            listView.setAdapter(adapter);

            Log.i("MainActivity", "OnBackPressed() -> new Adapter(list)");
            printList(list);
        } else {
            super.onBackPressed();
        }
    }

}

Codice (Java): [Seleziona]
MyArrayAdapter.java

package ale.bollette;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.List;


public class MyArrayAdapter extends ArrayAdapter<Bolletta> {

    private Context c;
    private int id;
    private List<Bolletta> items;

    public MyArrayAdapter(Context context, int textViewResourceId, List<Bolletta> objects) {
        super(context, textViewResourceId, objects);

        c = context;
        id = textViewResourceId;
        items = objects;
    }

    public Bolletta getItem(int i)

    {
        return items.get(i);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;

        if (v == null) {
            LayoutInflater vi = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(id, null);
        }

        final Bolletta o = items.get(position);

        if (o != null) {
            TextView t1 = (TextView) v.findViewById(R.id.bolletta_nome);
            TextView t2 = (TextView) v.findViewById(R.id.bolletta_prezzo);
            TextView t3 = (TextView) v.findViewById(R.id.bolletta_data);
            TextView t4 = (TextView) v.findViewById(R.id.bolletta_isPagata);

            if (t1 != null)
                t1.setText(o.getNome());

            if (t2 != null)
                t2.setText(String.valueOf(o.getPrezzo()));

            if (t3 != null)
                t3.setText(o.getScadenza().toString());

            if(t4 != null && o.isPagata() == true){
                t4.setText("Pagata");
            } else {
                t4.setText("Non pagata");
            }
        }

        return v;
    }

    @Override
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
    }

    @Override
    public void add(Bolletta object) {
        super.add(object);
    }

    public void remove(int pos) {
        items.remove(pos);
        notifyDataSetChanged();
    }

    public void add(int pos, Bolletta b){
        items.add(pos, b);
        notifyDataSetChanged();
    }
}

Codice (XML): [Seleziona]
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">


    <ListView android:layout_width="fill_parent"
       android:layout_height="0dp"
       android:layout_weight="10"
       android:id="@+id/listaRisultati">
    </ListView>

    <LinearLayout
       android:layout_width="wrap_content"
       android:layout_height="0dp"
       android:layout_weight="1"
       android:layout_gravity="center">

        <Button
           android:layout_width="0dp"
           android:layout_height="fill_parent"
           android:layout_weight="1"
           android:text="cerca"
           android:id="@+id/BUTTON_cerca"
           android:onClick="onButtonClick"/>

        <Button
           android:layout_width="0dp"
           android:layout_height="fill_parent"
           android:layout_weight="1"
           android:text="ordina"
           android:id="@+id/BUTTON_ordina"
           android:onClick="onButtonClick"/>

        <Button
           android:layout_width="0dp"
           android:layout_height="fill_parent"
           android:layout_weight="1"
           android:text="nuova"
           android:id="@+id/BUTTON_nuova"
           android:onClick="onButtonClick"/>

    </LinearLayout>

</LinearLayout>

Offline dellaz

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7 (2012), Samsung s6 Edge
  • Sistema operativo:
    Win 8.1, Ubuntu 16.10, Mac OS X 10.10 (Yosemite)
Re:ListView non mostra elementi
« Risposta #1 il: 28 Ottobre 2014, 17:52:14 CET »
0
Ciao, hai provato a togliere il filtro dal logcat per vedere se ti lancia qualche eccezione?
LogCat is the way!
Hai trovato utile una risposta? Clicca su

Offline ale99

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    GoClever Insignia x5
  • Sistema operativo:
    Windows 8.0
Re:ListView non mostra elementi
« Risposta #2 il: 28 Ottobre 2014, 19:40:27 CET »
0
Ho risolto togliendo
Citazione
setContentView(R.layout.activity_main);
in MainActivity.onActivityResult(int,int,Intent)

Credo anche di aver capito il perchè ( la mia concezione di View delle Activity era errata )


Inoltre il
Citazione
listView.setAdapter(adapter);
è inutile, e ho sostituito tutti i "break" con "return"



La nuova MainActivity
Codice (Java): [Seleziona]
package ale.bollette;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Date;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;


public class MainActivity extends Activity {

    LinkedHashMap<String, Bolletta> hashMap;
    LinkedList<Bolletta> list;
    LinkedList<Bolletta> searchResult;
    int resultsMode;

    ListView listView;
    MyArrayAdapter adapter;

    public final static int REQUESTCODE_nuovo = 1;
    public final static int REQUESTCODE_cerca = 2;
    public final static int REQUESTCODE_modifica = 3;

    public final static int RESPONSECODE_annulla = 1;
    public final static int RESPONSECODE_conferma = 2;
    public final static int RESPONSECODE_elimina = 3;

    public final static int RESULTS_search = 1;
    public final static int RESULTS_view = 2;

    Context context;

    File file;


    public MainActivity() {

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("MainActivity", "onCreate()");

        context = this;

        file = new File(Environment.getExternalStorageDirectory(), getString(R.string.fileName));

        resultsMode = RESULTS_view;

        setContentView(R.layout.activity_main);
        Log.i("MainActivity", "R.layout.activity_main is new screen layout");

        list = new LinkedList<Bolletta>();

        try {
            if (!file.exists()) {
                file.createNewFile();
                Log.i("MainActivity", "created file " + file.getAbsolutePath());
            } else {
                loadFile();
                Log.i("MainActivity", "loaded file " + file.getAbsolutePath());
            }
        } catch (IOException e) {
            Log.i("MainActivity", "IOException " + e.toString());
            finish();
        }

        listView = (ListView) findViewById(R.id.listaRisultati);

        adapter = new MyArrayAdapter(MainActivity.this, R.layout.bolletta, list);

        listView.setAdapter(adapter);

        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int pos, long l) {
                Log.i("MainActivity", "listView.onItemLongClickListener *******");
                Log.i("MainActivity", "adapterView : " + adapterView.toString());
                Log.i("MainActivity", "pos : " + pos);

                Bolletta b;

                if(resultsMode == RESULTS_view ) {
                    b = list.get(pos);
                } else {
                    b = searchResult.get(pos);
                }

                Intent intent = new Intent(context, NuovoRecord.class);

                intent.putExtra("position", pos);
                intent.putExtra("requestCode", REQUESTCODE_modifica);

                intent.putExtra("bolletta", b);

                Log.i("MainActivity", "Bolletta : " + b.toString());
                Log.i("MainActivity", "********");

                startActivityForResult(intent, REQUESTCODE_modifica);

                return true;
            }
        });

        Log.i("MainActivity", "initial view ready!");

        printList(list);
    }

    @Override
    protected void onDestroy() {
        Log.i("MainActivity", "onDestroy()");

        super.onDestroy();
    }

    public void loadFile() throws FileNotFoundException {
        Scanner scanner = new Scanner(file);

        while (scanner.hasNextLine()) {
            String[] line = scanner.nextLine().split("~");
            Bolletta bolletta = new Bolletta(line[0], Float.valueOf(line[1]), new Date(Long.valueOf(line[2])), (line[3].equals("true") ? true : false));

            list.add(bolletta);
        }
    }

    public boolean saveFile() {
        try {
            FileWriter writer = new FileWriter(file);

            for (Bolletta b : list) {
                writer.write(b.getNome() + "~" + b.getPrezzo() + "~" + b.getScadenza().getTime() + "~" + ((b.isPagata() == true) ? "true" : "false")
                        + System.getProperty("line.separator"));
            }

            writer.flush();
            writer.close();

        } catch (IOException ex) {
            ex.printStackTrace();
            return false;
        }

        return true;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);

        Log.i("MainActivity", "onActivityResult()");

        try {

            if (resultCode == MainActivity.RESPONSECODE_annulla) {
                Log.i("MainActivity", "annulla");
                return;
            }

            if (data == null) {
                Log.e("MainActivity", "data is null");
                return;
            }

            Bolletta bolletta;

            switch (requestCode) {
                case REQUESTCODE_nuovo:

                    bolletta = (Bolletta) data.getSerializableExtra("bolletta");
                    if (bolletta == null) {
                        return;
                    }

                    adapter.add(bolletta);

                    saveFile();

                    Log.i("MainActivity", "create finished");
                    printList(list);

                    return;

                case REQUESTCODE_modifica:

                    if (resultCode == MainActivity.RESPONSECODE_elimina) {
                        int position = data.getIntExtra("position", -1);
                        if (position != -1) {

                            adapter.remove(position);

                            saveFile();

                            Log.i("MainActivity", "delete finished");
                            printList(list);

                        }

                        return;
                    }

                    int pos = data.getIntExtra("position", -1);
                    if (pos == -1) {
                        return;
                    }

                    bolletta = (Bolletta) data.getSerializableExtra("bolletta");
                    if (bolletta == null) {
                        return;
                    }

                    adapter.set(pos, bolletta);

                    saveFile();

                    Log.i("MainActivity", "edit finished");
                    printList(list);

                    return;

                case REQUESTCODE_cerca:

                    if (data == null) {
                        break;
                    }

                    searchResult = new LinkedList<Bolletta>(list);

                    Bolletta b = (Bolletta) data.getSerializableExtra("bolletta");
                    if (b == null) {
                        return;
                    }

                    if (b.getNome() != null && !b.getNome().equals("")) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (t.getNome().contains(b.getNome())) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    if (b.getPrezzo() != -1) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (t.getPrezzo() == b.getPrezzo()) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    if (b.getScadenza() != null) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (t.getScadenza().equals(b.getScadenza())) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    boolean isPagata = data.getBooleanExtra("isPagata", false);

                    if (isPagata) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (t.isPagata()) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    boolean isNotPagata = data.getBooleanExtra("isPagata", false);

                    if (isNotPagata) {
                        LinkedList<Bolletta> temp = new LinkedList<Bolletta>();

                        for (Bolletta t : searchResult) {
                            if (!t.isPagata()) {
                                temp.add(t);
                            }
                        }

                        searchResult = temp;
                    }

                    resultsMode = RESULTS_search;

                    adapter = new MyArrayAdapter(MainActivity.this, R.layout.bolletta, searchResult);
                    listView.setAdapter(adapter);

                    Log.i("MainActivity", "search finished");
                    printList(searchResult);

                    return;
            }

        } catch (Exception e) {
            Log.e("MainActivity", e.toString());
        }

    }

    public void onButtonClick(View view) {
        Intent intent;

        switch (view.getId()) {
            case R.id.BUTTON_cerca:
                intent = new Intent(context, NuovoRecord.class);
                intent.putExtra("requestCode", REQUESTCODE_cerca);
                startActivityForResult(intent, REQUESTCODE_cerca);
                break;

            case R.id.BUTTON_ordina:

                ///////////////////  DEBUG
                adapter.add(new Bolletta(
                        "GENERATED " + new Random().nextInt(),
                        10f,
                        new java.util.Date(1000232),
                        true
                ));
                /////////////////////////// \DEBUG

                break;

            case R.id.BUTTON_nuova:
                intent = new Intent(context, NuovoRecord.class);
                intent.putExtra("requestCode", REQUESTCODE_nuovo);
                startActivityForResult(intent, REQUESTCODE_nuovo);
                break;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.action_bar, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.MENU_esporta:

                return true;
            case R.id.MENU_importa:

                return true;
            default:
                return super.onOptionsItemSelected(item);

        }

    }

    public void printList(List<Bolletta> list) {
        Log.i("MainActivity", "list ****************");

        for (Bolletta b : list) {
            Log.i("MainActivity", b.toString());
        }

        Log.i("MainActivity", "**************");
    }

    @Override
    public void onBackPressed() {
        if (resultsMode == RESULTS_search) {
            resultsMode = RESULTS_view;

            adapter = new MyArrayAdapter(MainActivity.this, R.layout.bolletta, list);
            listView.setAdapter(adapter);

            Log.i("MainActivity", "OnBackPressed() -> new Adapter(list)");
            printList(list);
        } else {
            super.onBackPressed();
        }
    }

}

Offline dellaz

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7 (2012), Samsung s6 Edge
  • Sistema operativo:
    Win 8.1, Ubuntu 16.10, Mac OS X 10.10 (Yosemite)
Re:ListView non mostra elementi
« Risposta #3 il: 28 Ottobre 2014, 19:42:00 CET »
0
Si, non avevo notato il setContentView nell'onActivityResult. Era quello la causa di tutto ;)
LogCat is the way!
Hai trovato utile una risposta? Clicca su