2014-06-17 4 views
1

Je suis à mes premiers pas dans Android ... J'ai déjà lu certaines des réponses à la question, et j'utilise beaucoup de conseils, mais je ne trouve pas comment résoudre mon problème.LISTVIEW - onItemClick ne fonctionne pas

Dans l'activité Catégories.java, une liste de construction est créée à partir d'une base de données. La listview se déroule correctement, alors je voudrais commencer une autre activité à partir de OnItemClick, mais j'ai réalisé que je ne peux même pas afficher un toast.

J'espère vraiment que certains d'entre vous peuvent m'aider Je ne trouve vraiment pas où est mon erreur !! Merci d'avance!

Voici mon code:

package com.example.myshopping; 

import java.util.ArrayList; 

import android.os.Bundle; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.app.Activity; 
import android.view.View; 
import android.widget.*; 
import android.widget.AdapterView.OnItemClickListener; 

public class Categories extends Activity{ 


@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.categories); 
    final ListView lista= (ListView) findViewById(R.id.id_categorie); 

    MioDatabaseHelper myHelper; 

    myHelper= new MioDatabaseHelper(this); 

    final SQLiteDatabase db= myHelper.getReadableDatabase(); 

    String [] columns_cat ={"nome_categoria"}; 

    Cursor cursor= db.query("categorie", columns_cat, null, null, null, null, null); 

    int len= cursor.getCount(); 

    cursor.moveToFirst(); 

    final ArrayList <String> array_cat= new ArrayList<String>(); 

    for (int i=0; i<(len); ++i){ 
     array_cat.add(cursor.getString(0)); 
     cursor.moveToNext(); 
    } 

    ArrayAdapter<String> myadapter= new ArrayAdapter<String>(this, R.layout.listitem, R.id.listitemTextView, array_cat); 


    lista.setAdapter(myadapter); 
    lista.setOnItemClickListener(new OnItemClickListener() { 


     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 


      Toast.makeText(getApplicationContext(), "hello toast!!!!", Toast.LENGTH_LONG).show(); 

      } 

    }); 



    } 

et ici le fichier xml des éléments de la liste:

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

<TextView 
    android:id="@+id/listitemTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:includeFontPadding="false" 
    android:padding="5pt" 
    android:scrollHorizontally="false" 
    android:textSize="10pt" /> 

</LinearLayout> 

et ici le fichier xml du fichier categories.java:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".Categories" > 

    <ListView 
     android:id="@+id/id_categorie" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:textIsSelectable="true"> 


    </ListView> 

</RelativeLayout> 

Répondre

0

Je vois une incohérence de base dans votre code:

R.layout.categories//in set content view 

et dans l'adaptateur de réseau:

ArrayAdapter<String> myadapter= new ArrayAdapter<String>(this, R.layout.listitem, R.id.listitemTextView, array_cat); 

Change R.layout.listitem à R.layout.categories ou utiliser un constructeur différent.

0

Est-ce que les attributs android:textIsSelectable="true" et android:descendantFocusability="blocksDescendants" sont nécessaires dans votre cas? Les utiliser incorrectement peut provoquer des problèmes de mise au point et l'écouteur de clic ne fonctionne pas. Essayez d'enlever les deux.

également l'élément de liste ne contient qu'un seul enfant pour la LinearLayout il pourrait juste être TextView ayant une largeur définie sur match_parent et la hauteur wrap_content combinée avec rembourrage.

+0

J'ai suivi votre suggestion et maintenant cela fonctionne, merci! – jessyjemy

0

Aussi, si vous voulez specyfy apparence textView Créer XML Juste avec cette textView sans parent Noode, coz listes peuvent être ricky parfois: P essayer de créer un autre XML juste pour tester qu'une chose
changer ceci:
<relativeLayout> attributes.. <textView> attributes.. </textView> </relativeLayout>
Pour
<TextView> attributes </TextView>
Basicaly vous voulez stand alone TextView

Questions connexes