ListView搞砸了

时间:2014-02-18 18:07:39

标签: android android-layout android-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(status)中的布局。

我还有其他改变此布局的方法,但是当我滚动列表时 它从状态中获取旧值并搞砸了布局。

编辑

第一次显示列表时,它显示为绿色按钮,当我单击此按钮时,它变为红色。但是当我滚动列表时,其他按钮也变为红色。

1 个答案:

答案 0 :(得分:1)

我认为您需要将第一个'if'中的代码移到'if'之外:

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);

当你的视图被重用时,你没有正确更新状态变量,这就是为什么你的视图搞砸了。