Autore Topic: Problema sul click delle item in ListView  (Letto 512 volte)

Offline pisciotta.f

  • Utente junior
  • **
  • Post: 52
  • Respect: +2
    • Mostra profilo
Problema sul click delle item in ListView
« il: 09 Maggio 2012, 22:21:38 CEST »
0
Vi posto il mio codice con la speranza che qualcuno mi aiuti a capire perchè delle volte il click sugli item viene riconosciuto, ma la maggior parte delle volte no!

Pleaseee help!!!

Ecco la mia Activity:

Codice: [Seleziona]
Typeface myFont;
        AssetManager assetManager;
        private ArrayList<ToDoVoice> itemList = new ArrayList<ToDoVoice>();
        private ToDoListAdapter m_adapter;
        ListView toDoList;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.home_activity);
               
                // Control the font
                assetManager = getResources().getAssets();
                myFont = Typeface.createFromAsset(assetManager, "fonts/cicle.ttf");

                itemList.add(new ToDoVoice("Voice"));
                itemList.add(new ToDoVoice("Voice2"));
                itemList.add(new ToDoVoice("Voice3"));

                toDoList = (ListView) findViewById(R.id.list);

                this.m_adapter = new ToDoListAdapter(this, itemList, myFont);
                toDoList.setAdapter(this.m_adapter);
                toDoList.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                Log.i("POSIZIONE","POS: "+position);
                    }
                });

        }


Questa è la classe dell'Adapter:
Codice: [Seleziona]
public class ToDoListAdapter extends ArrayAdapter<ToDoVoice> {
        private final Activity activity;
        private final ArrayList<ToDoVoice> voices;
        private final Typeface font;
       
       
        public ToDoListAdapter(Activity activity, ArrayList<ToDoVoice> voices, Typeface font) {
                super(activity, R.layout.row, voices);
                this.activity = activity;
                this.voices = voices;
                this.font = font;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                View rowView = convertView;
                TextView voice_text = null;
                // Get a new instance of the row layout view
                LayoutInflater inflater = activity.getLayoutInflater();
                rowView = inflater.inflate(R.layout.row, null);

                voice_text = (TextView) rowView.findViewById(R.id.voice);
               
                String text = voices.get(position).getVoice();
                voice_text.setText(text);
                voice_text.setTypeface(font);

                return rowView;
        }

}

E questi sono invece i file xml associati per la listView e per la singola riga:

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/home_activity"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/logo"
        android:layout_marginTop="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|top"
        android:src="@drawable/logo_splashscreen" />

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="50dp"
        android:cacheColorHint="#00000000"
        android:scrollbars="vertical"
        android:dividerHeight="10.0sp"
        android:divider="#00000000"
        android:layout_marginBottom="100dp" />
</LinearLayout>


Codice: [Seleziona]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="50dip"
    android:layout_marginTop="20dp"
    android:background="#123456"
    android:padding="6dip" >
        
    <LinearLayout
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:clickable="true"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/voice"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:textColor="#fff"
            android:textSize="35dip"
            android:textStyle="bold"></TextView>
          

        <TextView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="3dip"
            android:textSize="35dip"
                   android:text=">" />
    </LinearLayout>
   
 

</LinearLayout>



Ricordo che il problema è che il click sulle item funziona pochissime volte (ovvero che il log printa meno volte di quante in realtà clicco!!)

Offline qato

  • Nuovo arrivato
  • *
  • Post: 46
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
Re:Problema sul click delle item in ListView
« Risposta #1 il: 10 Maggio 2012, 08:55:08 CEST »
0
Al volo, non capisco bene il perché, ma di sicuro nell'adapter non è corretto l'uso che fai della convertView, ti consiglio di vedere questo tutorial sull'argomento ;)