Android ListView élément sélectionné séjour en surbrillance
J'ai un XML
avec deux ListView
, l'un avec une liste de clients remplie par une requête select (lv_cli
) et l'autre avec les coordonnées du client sélectionné (lv_cli_det
).
Je voudrais garder le client sélectionné dans la lv_cli
tandis que le lv_cli_det
afficher les détails.
XML:
<ListView
android:id="@+id/cli_lista"
android:layout_width="512dp"
android:layout_height="wrap_content"
android:fadeScrollbars="false"
>
</ListView>
<ListView
android:id="@+id/cli_lista_det"
android:layout_width="512dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/cli_lista"
android:fadeScrollbars="false" >
</ListView>
Java:
Cursor cursor = db.rawQuery("Select NrCl||';'||Nome From Clientes", null);
final ListView t = (ListView)findViewById(R.id.cli_lista);
ArrayAdapter<String> myarrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, listItems);
t.setAdapter(myarrayAdapter);
final ListView td = (ListView)findViewById(R.id.cli_lista_detalhe);
final ArrayAdapter<String> myarrayAdapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, listItems2);
t.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String item = ((TextView)view).getText().toString();
String[] strArray = item.split("\\;");
cli.load(strArray[0].toString());
td.setAdapter(myarrayAdapter2);
listItems2.clear();
listItems2.add("Nome: " + cli.getNome());
listItems2.add("Morada: " + cli.getMorada());
listItems2.add("Localidade: " + cli.getLoca());
listItems2.add("Código Postal: " + cli.getCp());
listItems2.add("Pais: " + cli.getPais());
listItems2.add("Nif: " + cli.getNif());
listItems2.add("Tel: " + cli.getTel());
listItems2.add("Tlm: " + cli.getTlm());
listItems2.add("Tipo Preço: " + cli.getTipoPvn());
listItems2.add("Cond. Pagamento: " + cli.getCpg());
listItems2.add("Obs: " + cli.getObs());
td.setAdapter(myarrayAdapter2);
myarrayAdapter2.notifyDataSetChanged();
}
});
- afficher votre code. vous avez utilisé fragment ou quoi??
- viens de faire marche arrière. comment vous faites le code pour hi listview?? poste le code ici..
- stackoverflow.com/a/15898103/726863
Vous devez vous connecter pour publier un commentaire.
De tenir la couleur de l'élément de liste lorsque vous appuyez sur ce bouton, inclure la ligne suivante dans votre liste élément de mise en page:
Puis définir
bg_key.xml
dansdrawable
dossier comme ceci:Enfin, l'inclure dans votre
ListView
onClickListener
:De cette façon, un seul objet sera de la couleur sélectionnée, à tout moment. Vous pouvez définir des valeurs de couleur dans
res/values/colors.xml
avec quelque chose comme ceci:<item android:drawable="@drawable/list_selector_background_transition_holo_light" android:state_pressed="true"/>
au lieuTrouvé la bonne façon. C'est très simple.
Des ressources décrire suivantes:
(ou vous pouvez spécifier une ressource lien au lieu de la valeur de la couleur)
Programmatique:
mode peut être l'un de ces: AbsListView.CHOICE_MODE_SINGLE, AbsListView.CHOICE_MODE_MULTIPLE, AbsListView.CHOICE_MODE_NONE (par défaut)
(AbsListView le résumé est-il l'ancêtre de la classe ListView)
P. S. manipulations avec onItemClick et l'évolution de fond de la vue sont en faillite, parce que la vue elle-même est un objet temporaire. Par conséquent, vous ne devez pas suivre un point de vue.
Si notre liste est assez longue, les points de vue associés à défiler les éléments seront supprimés de la hiérarchie, et sera recréé lors de ces éléments sera montré à nouveau (avec mise en cache des options d'affichage, tels que l'arrière-plan). Ainsi, la vue que nous avons suivi est maintenant pas un point de vue de l'élément, et l'évolution de son contexte n'a rien de réel point de vue. Par conséquent, nous avons plusieurs éléments sélectionnés.
Peut-être que vous pouvez économiser de l'élément de la sélection courante dans une variable globale à l'aide de l'indice i.
Manière simpliste est,si vous utilisez listview dans un xml,utiliser ces attributs sur votre liste,
si vous n'utilisez pas xml,en programmant
Vous avez besoin sélecteur comme ceci:
Et puis définissez
android:choiceMode="singleChoice"
à votre Liste.android:listselector="@drawable/my_selector"
dans votre ListView!De Avinash Pankaj Kumar exemple de
ensuite à la méthode oncreate
et puis onlistitemclick méthode que j'ai écrit
Il a travaillé pour moi. Merci.
J'ai remplacé
à
et le code a bien fonctionné.
Il est nécessaire que les fichiers xml des "couleurs" et "bg_key" à partir des exemples précédents, ainsi que de ListView attribut android:background="@drawable/bg_key"
Mauro
*s'il vous plaît assurez-vous il n'y a pas d'Ondulation à la racine de votre mise en page de l'affichage de la liste contenant
ajoutez cette ligne à votre liste de vue
ici est le "background_listview.xml" fichier
les couleurs utilisées dans le background_listview.xml fichier :
après ces
Une façon que vous pouvez faire, c'est de Garder une trace de l'actuelle position sélectionnée dans votre activité:
Maintenant, assurez-vous d'attribuer un numéro d'identification à la mère de mise en page (linearLayout, boxLayout, relativeLayout, .. tout ce que vous préférez) de votre élément de la liste.
Puis dans votre ListView vous pouvez faire quelque chose Comme ceci:
Fondamentalement, il suffit de régler le hilight de la couleur à la mise en page en arrière-plan quand il est égal au courant de votre position sélectionnée.
Vous remarquerez que j'ai mis un drawable ressource d'arrière-plan lorsque l'élément n'est pas sélectionné. Cela pourrait être dans votre cas différents (depuis que vous avez posté aucun code). Dans mon cas, ce drawable est un sélecteur qui permet de s'assurer que l'élément est éclairé lorsqu'il est pressé.
Utiliser l'id à la place:
C'est la méthode la plus simple qui peut gérer même si la liste est longue:
Et puis dans votre onclicklistener: