Autore Topic: ListView con Thumbnails e Multi Selection  (Letto 535 volte)

Offline kekko986

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Google+
    • Mostra profilo
    • Phorganizer
  • Dispositivo Android:
    GalaxyNexus | AOKP/CM9 | franco.Kernel
  • Play Store ID:
    Fra.c Labs
  • Sistema operativo:
    Ubuntu 12.04 LTS
ListView con Thumbnails e Multi Selection
« il: 30 Aprile 2012, 15:24:42 CEST »
0
buongiorno a tutti!
nella mia app ho un 'file explorer' implementato con una listview, e vorrei 1) aggiungere le anteprime per i file con estensione .jpg e vorrei 2) cambiare da single selection a multi selection quando si fa un long press su di una riga..
come è ora implementato.. il file explorer aggiunge una icona 'folder' per le cartelle.. e un icona 'file' per tutti i tipi di file... e vorrei, solo per i file jpg, inserire l'anteprima dell immagine al posto dell'icona 'file' generica.. le icone però sono file che sono memorizzati nella cartella res del mio progetto... mentre le anteprime dovranno essere utilizzate 'runtime'..a quanto ho capito bisogna fare accesso al MediaStorage.. comq volevo farvi vedere il mio codice..ma volevo soprattutto sapere se posso implementare le anteprime cambiando leggermente il codice...anche per aggiungere la multi selection, dopo un long press..come avviene nella app di sistema per la messagistica di android (aosp).. in gergo tecnico, mi sono 'imballato'... non riesco a capire come devo fare per 'passare' l anteprima anzichè l'icona predefinita...

allora..il mio scenario è questo ... ho una listview che usa un relative layout

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="60dip"
       android:padding="5dip">
        <ImageView
               android:id="@+id/fd_Icon"
               android:layout_width="50dip"
               android:layout_height="50dip"
       >
        </ImageView>
        <TextView
               android:text="Nome"
               android:layout_marginLeft="5dip"
               android:textAppearance="?android:attr/textAppearanceLarge"
               android:id="@+id/fd_Text"
               android:layout_toRightOf="@+id/fd_Icon"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"></TextView>
</RelativeLayout>

e ho la classe

Codice (Java): [Seleziona]
public class FileDirRow {
        private String file_dir_text;
        private int file_dir_icon;
        public FileDirRow( int file_dir_icon , String file_dir_text ) {
                super();
                this.file_dir_icon = file_dir_icon;
                this.file_dir_text = file_dir_text;
        }
        public String getFileDirText() {
                return file_dir_text;
        }
        public int getFileDirIcon() {
                return file_dir_icon;
        }
}
e popolo la listview in questo modo dove

Codice (Java): [Seleziona]
//arrayItemT contiene tutti i file e le directory della path corrente
    ArrayList<FileDirRow> lista_file_dir =new ArrayList<FileDirRow>();

    for(int i=0;i<arrayItemT.size();i++){
        if (arrayItemT.get(i).endsWith("/"))
            lista_file_dir.add(new FileDirRow(R.drawable.folder, arrayItemT.get(i)));
        else
-----------------------------------------------------------------------------
        ////qui è dove mi sono fossilizzato...se il file è una foto richiama anteprima..oppure carica icona 'file generico'
            lista_file_dir.add(new FileDirRow(R.drawable.file, arrayItemT.get(i)));
-----------------------------------------------------------------------------
    }

    //popola lista
    ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();

    for(int i=0;i<arrayItemT.size();i++){
         FileDirRow p= lista_file_dir.get(i);

            HashMap<String,Object> rowMap=new HashMap<String, Object>();//create value map

            rowMap.put("image", p.getFileDirIcon()); //for image key,image res
            rowMap.put("name", p.getFileDirText()); //for name key,l'informazine sul nome
            data.add(rowMap);  //add value map to data source
            }
    String[] from={"image","name"}; //from value under this key
    int[] to={R.id.fd_Icon,R.id.fd_Text};//to views id

    //crea adapter
    SimpleAdapter adapter=new SimpleAdapter(
                    getApplicationContext(),
                    data,//sorgente dati
                    R.layout.icon_row, //layout
                    from,
                    to);

    //usa adapter
    ((ListView)findViewById(R.id.FileDirList)).setAdapter
« Ultima modifica: 30 Aprile 2012, 15:31:13 CEST da kekko986 »