J'ai implémenté Android listview
avec ListActivity
. Ici, le problème est que, lorsque je clique sur l'élément de la liste, aucune action n'est effectuée lorsque la couleur du flash n'apparaît pas, à savoir la couleur orange. Alors, avez-vous une idée de cette réponse aimable à ma question?
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
super.onListItemClick(l, v, position, id);
Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT)
.show();
}
Je mets également ce code dans Main ListActivity.
La première chose que vous devez noter ici est que, chaque fois que des éléments Clickable tels que Boutons ou ImageButtons
sont présents dans votre élément ListView
, ils prennent le contrôle des événements de clic. Et pour que votre ListView
ne puisse pas accepter l'événement click.
Ce que vous devez simplement faire est de définir l'attribut focusable
sur false pour les Button
ou ImageButton
que vous avez dans votre liste. Mais ils fonctionneront quand même sans problème et votre onListItemClick
de ListView fonctionnera également.
Essaye ça,
<Button Android:id="@+id/textsize_increaser"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_toRightOf="@+id/back_button"
Android:focusable="false"
Android:text=" A + "/>
Ici, j'ai ajouté ce Android:focusable="false"
et cela fonctionne bien. l'essayer.
Avez-vous défini le mode de choix de ListView sur SINGLE:
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
Et si vous avez une image ou une textview ou un bouton cliquable dans l'élément de la liste, désactivez-les (dans votre classe d'adaptateur):
yourButton.setFocusable(false);
yourButton.setFocusableInTouchMode(false);
Utilisez-vous un adaptateur personnalisé? et gonfler la disposition avec le bouton ou toute vue qui ronge le focus de la vue liste comme un enfant, cela ne fonctionnera évidemment pas. assurez-vous de définir
Android:focusable="false"
à une telle vue en fichier xml. J'espère que cela fonctionne pour toi.
Définissez ceci dans votre fichier Java de listactivity
listview1.setFocusable(false);
Eclipse m'a suggéré d'ajouter textIsSelectable="true"
à mes TextViews dans le XML de mise en page utilisé pour l'affichage en liste.
Eh bien, si vous souhaitez cliquer sur les éléments de la liste, vous ne devez pas ajouter ces balises.
se référer à ce post pour une solution:
Click ne fonctionne pas sur Listitem Listview Android
View v = parent.getChildAt(position);
parent.requestChildFocus(v,view);
v.setBackground(res.getDrawable(R.drawable."Some drawable for clicked row"));
int count = parent.getChildCount();
for(int i=0; i<count; i++)
{
if(i!=position)
{
v = parent.getChildAt(i);
v.setBackground(res.getDrawable(R.drawable."some drawable for not clicked row));
}
}
En fait, il existe un paramètre destiné à empêcher le focus des vues enfants, ajoutez simplement ce qui suit dans la présentation parent:
Android:descendantFocusability="blocksDescendants"
Comme l'explique la documentation:
Le ViewGroup empêchera ses descendants de recevoir le focus.
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int pos,
long id) {
Toast.makeText(v.getContext(), exm.get(pos).getDefinition(),
Toast.LENGTH_SHORT).show();
}
});
listItemButton.setFocusable(false);
listItemButton.setFocusableInTouchMode(false);
Définissez ce qui précède dans votre adaptateur . Ce n'est pas workiXMLinXML
assurez-vous que vous êtes
Si la vue de défilement est présente à l’un des endroits ci-dessus, supprimez-le.