2012-07-10 4 views
4

J'ai un ListView et en cela ListView j'ai une rangée avec certains TextViews et EditTexts dedans. Lorsque j'appuie n'importe où sur la ligne, je veux que le EditText prenne la mise au point afin que le texte puisse être entré.EditText focus dans un ListView

Le problème est que je n'arrive pas à faire fonctionner ceci. Quand je place le EditText dans le ListView le OnItemClick ne répondra pas quand je clique sur le ListView.

J'ai essayé d'utiliser focusable="false" sur le EditText et il m'a permis de cliquer sur le nouveau ListView mais je ne pouvais pas obtenir le EditText de se concentrer, même après avoir réglé le focusable à true. Ensuite, j'ai essayé d'utiliser le android:descendantFocusability="beforeDescendants" dans le ListView mais il n'a pas semblé faire de changement, il ne fonctionnerait toujours pas.

Est-ce que quelqu'un a une idée de ce que je peux faire pour que ça marche?

+0

Copie possible de [Editable FocusText dans ListView] (http://stackoverflow.com/questions/2679948/focusable-edittext-inside-listview) – blahdiblah

Répondre

0

vous pouvez ajouter une propriété comme enabled="false" dans la mise en page de la ligne xml et sur le onItemClickListener vous pouvez setEnabled(true) puis setFocusable(true), cela devrait le résoudre.

3

faire comme ce

ListView listView = (ListView) findViewById(R.id.yourListViewId); 
listView.setItemsCanFocus(true); 
listView.setClickable(false); 

-à-dire,

après avoir obtenu l'objet ListView de xml, désactivez le clic sur ce listview et passer le focus à l'enfant considère

4

Essayez cela, il devrait vous permettre de cliquer sur une ligne et de mettre en évidence l'EditText (modifié à partir de ce SO Answer):

public void onItemSelected(AdapterView<?> listView, View view, int position, long id) 
{ 
    EditText yourEditText = (EditText) view.findViewById(R.id.youredittextid); 
    listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); 
    yourEditText.requestFocus(); 
} 

public void onNothingSelected(AdapterView<?> listView) 
{ 
    // onNothingSelected happens when you start scrolling, so we need to prevent it from staying 
    // in the afterDescendants mode if the EditText was focused 
    listView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS); 
}