Autore Topic: ListView Selezione multipla ed immagine  (Letto 1030 volte)

Offline jaco94++

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Github
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Play Store ID:
    JDL
  • Sistema operativo:
    Fedora
ListView Selezione multipla ed immagine
« il: 09 Marzo 2013, 14:10:06 CET »
0
Ciao a tutti, avrei bisogno di una mano per capire perchè la mia listview non funziona (o per lo meno non funziona correttamente).

Sono partito da un mio vecchio adapter che permetteva di visualizzare oltre al testo anche un immagine, ora vorrei modificarlo inserendo una checkbox per permettere la selezione multipla degli elementi.
Il problema è che inserendo la checkbox la listview smette di funzionare correttamente poichè diventa impossibile fare il click o il longclick su un elemento! Come posso risolvere ?

Adapter:
Codice (Java): [Seleziona]
public class ListAdapter extends ArrayAdapter<ListObject>
{
        private class ViewObject
        {
                ImageView ImgView;
                TextView Tview1,Tview2;
        }
       
        Context ListContext;
       
        public ListAdapter (Context context,int ResourceId,List<ListObject> items)
        {
                super(context,ResourceId,items);
                this.ListContext=context;
        }
       
        public View getView(int position,View convertView,ViewGroup parent)
        {
                ViewObject Vobj=null;
                ListObject Lobj=getItem(position);
               
                LayoutInflater MyInflate =(LayoutInflater)ListContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
                if(convertView==null)
                {
                        convertView=MyInflate.inflate(R.layout.app_inflate,null);
                        Vobj=new ViewObject();
                        Vobj.Tview1=(TextView)convertView.findViewById(R.id.textView1);
                        Vobj.Tview2=(TextView)convertView.findViewById(R.id.textView2);
                        Vobj.ImgView=(ImageView)convertView.findViewById(R.id.imageView1);
                        convertView.setTag(Vobj);
                }
                else
                {
                        Vobj=(ViewObject)convertView.getTag();
                }
                Vobj.Tview1.setText(Lobj.getApkName());
                Vobj.Tview2.setText(Lobj.getRawApkName());
                Vobj.ImgView.setImageDrawable(Lobj.getPicture());
                return convertView;
        }
}

App_inflate.xml

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="fill_parent" >

    <ImageView
       android:id="@+id/imageView1"
       android:layout_width="64dp"
       android:layout_height="64dp"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="true"/>

    <TextView
       android:id="@+id/textView1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentTop="true"
       android:layout_marginLeft="20dp"
       android:layout_toRightOf="@+id/imageView1"
       android:text="ApkName"
       android:textAppearance="?android:attr/textAppearanceLarge"
       android:textColor="@color/TextWhite" />

    <TextView
       android:id="@+id/textView2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignLeft="@+id/textView1"
       android:layout_below="@+id/textView1"
       android:text="RawAppName"
       android:textAppearance="?android:attr/textAppearanceSmall"
       android:textColor="@color/TextWhite" />

       QUi andrebbe la checkbox

   <CheckBox
       android:id="@+id/checkBox1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBaseline="@+id/textView2"
       android:layout_alignBottom="@+id/textView2"
       android:layout_alignParentRight="true"
       android:text="CheckBox" />

</RelativeLayout>

main:
Codice (Java): [Seleziona]
lAdapter=new ListAdapter(getActivity(),R.layout.apk_manager,ApkList);
                AppList.setAdapter(lAdapter);
                EnumApkDialog.dismiss();

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:ListView Selezione multipla ed immagine
« Risposta #1 il: 09 Marzo 2013, 15:33:17 CET »
0
Puoi disattivare il click sulle righe della lista in modo tale da poter selezionare solo il checkbox.

Offline jaco94++

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Github
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Play Store ID:
    JDL
  • Sistema operativo:
    Fedora
Re:ListView Selezione multipla ed immagine
« Risposta #2 il: 09 Marzo 2013, 15:43:45 CET »
0
In realtà io vorrei selezionare il checkbox(che funziona) e permettere anche il click o il longclick su un elemento della lista(parte che non funziona!)

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:ListView Selezione multipla ed immagine
« Risposta #3 il: 09 Marzo 2013, 15:56:30 CET »
0
Checkbox funzionante e  click della lista la vedo un po' una cosa confusa. Nel senso che si può fare però non è il massimo per l'utente. Pensa magari all'utente che vuole selezionare la checkbox e sbaglia a spingere di poco e clicca la lista. Magari con il click della lista vai su un'altra activity da cui è difficile tornare indietro, o comunque non puoi pensare che l'utente stia li attento al 100% a cliccare esattamente sulla tua ceckbox e non sulla riga della lista.Si può fare ma secondo me  non è una buona pratica. Se vuoi mantenere il click anche sulla lista, puoi pensare di utilizzare il longclick. Prova a farlo e se non ci riesci quando torno a casa provo a darti una mano. Ovviamente se non riesci posta il codice.

Offline jaco94++

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Github
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Play Store ID:
    JDL
  • Sistema operativo:
    Fedora
Re:ListView Selezione multipla ed immagine
« Risposta #4 il: 09 Marzo 2013, 19:26:46 CET »
0
Si io intendevo usare il lonkclick non avevo alcuna intenzione di usare il click! Il problema e che appunto inserendo la checkbox il listview non si comporta più normalmente perchè di solito se tocchi un elemento quello si illumina di blu in genere... questo non avviene più appena inserisco la checkbox, inoltre smette di funzionare sia il lonkclicklistener sia il clicklistener... Mi basta levare la checkbox per far tornare tutto normale... non capisco! Probabilmente sbaglio io qualcosa!

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:ListView Selezione multipla ed immagine
« Risposta #5 il: 09 Marzo 2013, 21:28:26 CET »
0
posta il codice con il longclick..

Offline jaco94++

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Github
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Play Store ID:
    JDL
  • Sistema operativo:
    Fedora
Re:ListView Selezione multipla ed immagine
« Risposta #6 il: 10 Marzo 2013, 18:17:59 CET »
0
A posto risolto! il problema era nel xml della checkbox da quando ho aggiunto:

Codice (XML): [Seleziona]
android:focusable="false"
android:focusableInTouchMode="false"
tutto è tornato a funzionare!
Ora funziona sia il click che il longclick!