2014-02-18 87 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