2010-09-23 18 views
0

J'ai un ListView et un ExpandableListView dans une TabActivity. J'ai remplacé le setOnItemClickListener pour le ListView. J'ai 2 onglets et un utilise le ListView et l'autre utilise ExpandableListView. Pour une raison quelconque, je ne peux pas cliquer sur l'un des éléments dans le premier ListView. Si je change d'onglet dans ExpandableListView puis que je reviens au premier onglet, cela me permettra de cliquer sur les éléments comme d'habitude. Des idées sur pourquoi cela se passe. Y a-t-il une sorte de chose bizarre qui se passe?ListView OnClickListener ne fonctionne pas dans TabActivity

J'ai cela dans le cadre de mon code:

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listview); 

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

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> av, View v, int pos, long id) { 
        onListItemClick(pos, id); 
        // return false; 
       } 
      }); 
} 

Répondre

1

Je vais avoir le même problème en ce moment. Je posterai une solution si j'en trouve une.

Pas la solution que je cherche ... mais voici ce qui a fonctionné dans l'intervalle.

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    //lv is a reference to my ListView. 
    lv.setSelection(position); 

    return convertView; 
} 

Permettez-moi constate que ce n'est pas une solution idéale, il est juste quelque chose qui semble fonctionner toujours sur les versions Android> 1.5. (C'est ce que j'ai testé avec).

Une note supplémentaire ici, vous utilisez aussi onItemClickListener et cela ne répond généralement qu'à l'utilisation de la boule de commande ou des touches fléchées sur l'émulateur. Cela pourrait être votre situation pour ne pas gérer l'événement onClick. J'utilise un

0

Je viens d'avoir le même problème. Certains ListViews distribués par un TabActivity. Je ne pouvais pas définir un bon OnItemClickListener, donc j'ai joint un OnClickListener "manuellement" dans l'adaptateur au convertView. Il attache juste un OnClickListener à chaque cellule.

comme ceci:

convertView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // What you want to do with this "item click" 
     // make an Intent to start something else or whatever 
    } 
}); 

Bien sûr, vous le faites dans la méthode d'adaptation (par exemple, avant de retourner le convertView):

public View getView(int position, View convertView, ViewGroup parent) 

Cela a fonctionné dans mon cas, je l'espère aide tu sors.

Bonne chance

+0

Oh, et par la façon dont vous avez besoin si la position de votre article dans la liste, tout comme mettre une marque pour votre convertView, de cette façon vous récupérerez dans la méthode onClick. – MrBuBBLs