我的应用程序中有这个方法:
@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)中的布局。
我还有其他改变此布局的方法,但是当我滚动列表时 它从状态中获取旧值并搞砸了布局。
编辑
第一次显示列表时,它显示为绿色按钮,当我单击此按钮时,它变为红色。但是当我滚动列表时,其他按钮也变为红色。
答案 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);
当你的视图被重用时,你没有正确更新状态变量,这就是为什么你的视图搞砸了。