2014-02-18 85 views
-1

我在我的應用程序這個方法:的ListView被搞砸

@Override 
public View getView(final int index, View view, ViewGroup parent) { 
    final MyObject alerta = (MyObject) getItem(index); 

    if (view == null) { 
     LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
     view = inflater.inflate(R.layout.my_view, parent, false); 

     dia = Integer.parseInt(alerta.getDias()); 
     status = alerta.isStatus(); 

     salvaStatus(status, index); 
     salvaDia(""+dia, index); 
    }    

    final TextView tvDias = (TextView) view.findViewById(R.id.tvDiasConfiguracoesAlerta); 
    final Button btStatus = (Button)view.findViewById(R.id.btStatusConfiguracoesAlerta); 
    final Button btLeft = (Button)view.findViewById(R.id.btLeftDiasConfiguracoesAlertas); 
    final Button btRight = (Button)view.findViewById(R.id.btRightDiasConfiguracoesAlertas);  
    final TextView tvNome = (TextView) view.findViewById(R.id.tvNomeAlertaConfiguracoes); 
    final TextView tvStatusAntecedencia = (TextView) view.findViewById(R.id.tvStatusConfiguracoesAlerta); 

    tvNome.setText(alerta.getNome()); 
    mudaTexto(tvDias, tvStatusAntecedencia, dia); 

    if(status){ 
     btStatus.setBackgroundResource(R.drawable.botao_configuracao_on); 
    } else { 
     btStatus.setBackgroundResource(R.drawable.botao_configuracao_off); 
     btLeft.setVisibility(View.INVISIBLE); 
     btRight.setVisibility(View.INVISIBLE); 
     tvDias.setVisibility(View.INVISIBLE); 
     tvStatusAntecedencia.setText("Desligado..."); 
    } 
return view } 

裏面的,如果我得到狀態的值。 比,我處理if(狀態)的佈局。

我有其他的方法也改變了這種佈局,但是當我滾動列表 時,它從狀態中獲得舊值並且弄亂了佈局。

編輯

第一次列表中出現,它會出現一個綠色按鈕,當我點擊這個按鈕,他變成紅色。但是當我滾動列表時,其他按鈕也變成紅色。

+0

你是什麼意思,「搞砸佈局」,請提供具體問題是什麼。 – Pete

+0

列表第一次出現時,它會顯示一個綠色的按鈕,當我點擊這個按鈕時,他變成了紅色。但是當我滾動列表時,其他按鈕也變成紅色。 – Roland

回答

1

我認爲你需要的代碼的移動在第一「如果」到「如果」外:

if (view == null) { 
    LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
    view = inflater.inflate(R.layout.my_view, parent, false); 
} 
dia = Integer.parseInt(alerta.getDias()); 
status = alerta.isStatus(); 
salvaStatus(status, index); 
salvaDia(""+dia, index); 

當你的看法被重用,你沒有正確更新狀態變量,這就是爲什麼你的觀點搞砸了。

+0

它沒有工作。 – Roland