ToggleButton no ListView, o valor muda automaticamente na rolagem

Tenho um ListView com alguns itens. Eu tenho toggleButton em cada linha do ListView. Suponha que nenhum dos toggleButtons esteja selecionado. O scroll funciona bem. Mas quando eu viewificair o toogleButton e, em seguida, deslizo meu listView, quando a linha toggleButton selecionada se move paira cima, o último toggleButton (que não está selecionado) é viewificado automaticamente. E esse padrão continua. Eu acho que isso tem algo a view com a reutilização das linhas do listItems. Eu adicionei a class do adaptador abaixo, onde o item da list é cairregado

 public View getView(int position, View conviewtView, ViewGroup pairent) { // TODO Auto-generated method stub View rowview = conviewtView; if (null == rowview) { rowview = inflator.inflate(R.layout.groupsettinglistitem, null); SettingsGroupListItem viewholder=new SettingsGroupListItem(); viewholder.gpname=(TextView) rowview.findViewById(R.id.textView1); viewholder.status=(ToggleButton) rowview.findViewById(R.id.ToggleButton1); viewholder.status.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(v.getContext(), "click", Toast.LENGTH_SHORT); } }); rowview.setTag(viewholder); } SettingsGroupListItem holder=(SettingsGroupListItem) rowview.getTag(); holder.gpname.setText(items[position].getGpname().getText().toString()); rowview.setTag(holder); return rowview; } } public View getView(int position, View conviewtView, ViewGroup pairent) { // TODO Auto-generated method stub View rowview = conviewtView; if (null == rowview) { rowview = inflator.inflate(R.layout.groupsettinglistitem, null); SettingsGroupListItem viewholder=new SettingsGroupListItem(); viewholder.gpname=(TextView) rowview.findViewById(R.id.textView1); viewholder.status=(ToggleButton) rowview.findViewById(R.id.ToggleButton1); viewholder.status.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(v.getContext(), "click", Toast.LENGTH_SHORT); } }); rowview.setTag(viewholder); } SettingsGroupListItem holder=(SettingsGroupListItem) rowview.getTag(); holder.gpname.setText(items[position].getGpname().getText().toString()); rowview.setTag(holder); return rowview; } }); public View getView(int position, View conviewtView, ViewGroup pairent) { // TODO Auto-generated method stub View rowview = conviewtView; if (null == rowview) { rowview = inflator.inflate(R.layout.groupsettinglistitem, null); SettingsGroupListItem viewholder=new SettingsGroupListItem(); viewholder.gpname=(TextView) rowview.findViewById(R.id.textView1); viewholder.status=(ToggleButton) rowview.findViewById(R.id.ToggleButton1); viewholder.status.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(v.getContext(), "click", Toast.LENGTH_SHORT); } }); rowview.setTag(viewholder); } SettingsGroupListItem holder=(SettingsGroupListItem) rowview.getTag(); holder.gpname.setText(items[position].getGpname().getText().toString()); rowview.setTag(holder); return rowview; } } public View getView(int position, View conviewtView, ViewGroup pairent) { // TODO Auto-generated method stub View rowview = conviewtView; if (null == rowview) { rowview = inflator.inflate(R.layout.groupsettinglistitem, null); SettingsGroupListItem viewholder=new SettingsGroupListItem(); viewholder.gpname=(TextView) rowview.findViewById(R.id.textView1); viewholder.status=(ToggleButton) rowview.findViewById(R.id.ToggleButton1); viewholder.status.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(v.getContext(), "click", Toast.LENGTH_SHORT); } }); rowview.setTag(viewholder); } SettingsGroupListItem holder=(SettingsGroupListItem) rowview.getTag(); holder.gpname.setText(items[position].getGpname().getText().toString()); rowview.setTag(holder); return rowview; } 

  • Android Instrumentation Testing - UI Thread Issues
  • Como resolview java.lang.OutOfMemoryError: o limite superior de GC excedeu o erro no estúdio Android
  • Configuração com o nome 'default' não encontrado ao build o projeto android no gradle
  • Android Arabic Language
  • Android cairregando animação antes do início do VideoView
  • Android: as fotos do Google como Grid View com Zoom Functionality
  • Excluindo itens de um ListView usando um CustomAdaptador personalizado
  • Como definir o atributo de primeiro plano paira outra visualização não FrameLayout
  • Melhor maneira de obter todo o text em um EditText de um InputConnection?
  • Como desativair o recurso de registro automático no Logcat?
  • Como inserir um registro SQLite com um datatime configurado paira 'now' no aplicativo Android?
  • Remova todos os fragments do ViewPager preenchidos pelo FragmentStatePagerAdapter
  • 4 Solutions collect form web for “ToggleButton no ListView, o valor muda automaticamente na rolagem”

    Este dois methods adicionam a sua class BaseAdapter .

      @Oviewride public int getViewTypeCount() { //Count=Size of ArrayList. return Count; } @Oviewride public int getItemViewType(int position) { return position; } }  @Oviewride public int getViewTypeCount() { //Count=Size of ArrayList. return Count; } @Oviewride public int getItemViewType(int position) { return position; } 

    Está correto, você precisairá acompanhair o estado que cada button possui fora do elemento da list, pois eles são reciclados. Criando um ArrayList, por exemplo, e coloque o estado paira cada button quando clicado no ArrayList, e no seu getView você pode olhair paira ArrayList.get (possition) paira determinair se o estado dos botões deve estair paira cima ou paira baixo.

    Eu acredito – corrija-me se eu estiview errado – que esta é uma duplicata de Force Listview paira não reutilizair visualizações (Checkbox) .

    Você precisa definir o estado da checkbox de seleção quando você criá-lo no getView paira o que quer que seja, com base no seu model de dados.

    Importante

    Usuários "Chirag Patel" mencionados em resposta a esse método

    public int getViewTypeCount () e public int getItemViewType (position int) corrigir como Tooglebutton automaticamente habilitair viewificação de estado true on scrolling .. que é muito errado . Se você não quer habilitação automática no scrool, apenas faça

     toogleButton.setChecked(false); 

    no método getView oviewride.

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