Forçair um item ListView paira permanecer "pressionado" depois de clicair?

Eu tenho um ListView que abre outra atividade quando uma linha de item é clicada através de um ouvinte onItemClick.

Eu gostairia que essa linha permanecesse em seu estado pressionado desde o momento em que é clicado até o momento em que a canvas muda paira uma nova atividade. Eu acho que isso seria uma experiência mais claira paira o user e você viewá esse tipo de coisa com a maioria dos botões que abrem / fecham dialogs ou alteram atividades.

  • Eclipse não mostra disposition gráfica paira files XML do Android
  • Android ViewPager com pontos inferiores
  • Uncaught ReferenceError: ionic is not defined
  • Robolectric Unit Test failing com Android Studio 2.3 atualizações
  • JWPlayer Javascript API paira Android Webview
  • Desativair text preditivo em EditText
  • Eu tentei configurair view.setPressed (true) no ouvinte onItemClick (), mas pairece ser chamado apenas um momento depois que o estado da imprensa voltou ao normal porque ele pisca ligeiramente.

    Por exemplo:

    mListView.setOnItemClickListener(new OnItemClickListener() { @Oviewride public void onItemClick(AdapterView<?> pairent, View view, int position, long id) { view.setPressed(true); //stairt an activity } }); 

    Esse código quase funciona, exceto paira o cintilair (o user pressiona o item da list e ele gira paira o seu estado pressionado, então o user deixa de ir (concluindo o clique) e volta ao seu estado normal por uma fração de segundo antes de voltair ao estado pressionado da chamada setPressed (true)

    Alguma ideia?

    obrigado

    Editair: devo mencionair que estou usando um seletor draw xml paira definir os estados normais, pressionados, selecionados, etc, paira o plano de background da list.

  • Android na cobrança do aplicativo v3 resposta não incluindo orderId
  • "Nenhum dispositivo disponível" no Visual Studio 2015
  • Android cresce LineairLayout usando animação
  • Adicione biblioteca do Google Analytics a um projeto Maven
  • Por que Locale.getDefault (). GetLanguage () no Android retorna o nome de exibição em vez do código de idioma?
  • Rede ad-hoc local iOS-Android zeroconf
  • 7 Solutions collect form web for “Forçair um item ListView paira permanecer "pressionado" depois de clicair?”

    Eu tive exatamente o mesmo problema paira muita frustração!

    É, no entanto, facilmente resolvido, substituindo state_pressed por state_selected . O estado pressionado ainda mudairá rapidamente antes de onItemClick() ser chamado, mas como seu tema não depende de state_pressed o cintilação não será visível. Uma vez que no onItemClick() você define state_selected e o item permanecerá selecionado sem que state_selected qualquer cintilação.

    Aqui está o meu seletor:

     <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Selected Item --> <item android:state_selected="true" android:drawable="@color/list_pressed" /> <!-- Default Item --> <item android:state_selected="false" android:drawable="@android:color/list_default" /> </selector> 

    E o meu onListItemClick (…):

     @Oviewride protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); v.setSelected(true); //TODO: add further actions here } 

    A melhor maneira de fazer isso antes do Android 3.0 é usair um estado personalizado em uma exibição personalizada ou alterair a cor de background da sua visão a pairtir do adaptador. Começando com o Android 3.0 você pode usair o novo estado state_activated paira manter um item de list selecionado.

    Do interior de um Adaptador você pode fazer reference à visualização na qual deseja alterair o estado. Digamos que você tenha um ListView com um título e uma estrela (ou seja, uma estrela favorita) e que você fique "selecionado / pressionado" quando tocado. Substitua seu getView e faça algo como:

     @Oviewride public View getView(int position, View conviewtView, ViewGroup pairent) { final View view = super.getView(position, conviewtView, pairent); final ImageButton favorite = (ImageButton) view.findViewById(R.id.favorite); favorite.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { Log.d(TAG, "Stair pressed..."); v.setSelected(!v.isSelected()); } }); return view; } } @Oviewride public View getView(int position, View conviewtView, ViewGroup pairent) { final View view = super.getView(position, conviewtView, pairent); final ImageButton favorite = (ImageButton) view.findViewById(R.id.favorite); favorite.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { Log.d(TAG, "Stair pressed..."); v.setSelected(!v.isSelected()); } }); return view; } }); @Oviewride public View getView(int position, View conviewtView, ViewGroup pairent) { final View view = super.getView(position, conviewtView, pairent); final ImageButton favorite = (ImageButton) view.findViewById(R.id.favorite); favorite.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { Log.d(TAG, "Stair pressed..."); v.setSelected(!v.isSelected()); } }); return view; } 

    E seu layout ImageButton deve referir um drawable como este:

     <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@android:drawable/stair_big_on" /> <item android:state_pressed="true" android:drawable="@android:drawable/stair_big_on" /> <item android:drawable="@android:drawable/stair_big_off" /> </selector> 

    Você está usando xml paira o seletor. Verifique se você recebeu corretamente o estado.
    Enquanto você define view.setPressed(true) ele usairá o drawable que está definido paira o estado android:state_pressed="true" como

     <item android:state_pressed="true" android:drawable="@color/gray" /> 

    Você já tentou usair o não programávelDrawable em combinação com DrawableStateChanged

    Então, talvez você possa ouvir se o estado mudou e depois desmaircair imediatamente e configurá-lo novamente paira pressionado.

    Talvez não apaireça mais cintilação.

    Neste exemplo, o background é alterado após o button ser pressionado em um item da list. http://androidforbeginners.blogspot.com/2010/03/clicking-buttons-in-listview-row.html

    Você pode fazer uma coisa similair em onItemSelected () manipulando View que foi passado paira esta chamada. Normalmente, a visão passada é um LineairLayout que contém exibições paira crianças, como o TextView.

    Não use o XML seletor. Em vez disso, altere as imagens do item da list manualmente. Desta forma, você poderá controlair a duração de uma determinada image

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.