在 android 中滚动列表视图时,文本值的顺序发生变化

Text values has order changes when scroll the listview in android

当我在列表视图中单击以编辑我的 EditText 时,项目的顺序发生了变化。我认为问题出在适配器上,但我不知道如何解决它。

例如:最后一项排到第二位。

适配器:

public class adapterAvaliacao extends BaseAdapter {

private LayoutInflater mInflater;
private List<Nota> itens;
DecimalFormat formatoNota = new DecimalFormat("#0.00");

public adapterAvaliacao(Context context, List<Nota> itens) {
    this.itens = itens;
    mInflater = LayoutInflater.from(context);
}

@Override
public int getCount() {
    return itens.size();
}

@Override
public Nota getItem(int position) {
    return itens.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@SuppressLint({ "ViewHolder", "InflateParams" }) @Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {
        Nota item = itens.get(position);

        convertView = mInflater.inflate(R.layout.avaliacao_adapter, null);
        ((TextView) convertView.findViewById(R.id.lbl_nomeAtividade)).setText(item.getTitulo());
        if (item.isLancada()) {
            ((EditText) convertView.findViewById(R.id.txt_notaPostada)).setText(String.valueOf(formatoNota.format(item.getNota() * 10 / item.getPeso())).replace(",", "."));
        }
    } else {
        convertView.setTag(convertView.getTag());
        }
    return convertView;
}

是的,这是 listView 的正常行为,因此请根据需要将您的值存储在 arraylist 或模型中,以便您可以在滚动时设置它。

由于列表视图项目的回收,你必须这样做。

你的 setText 代码行应该写在 else 部分之后:

if (convertView == null) {
//your stuffs like find edit text

    }
    else {
            convertView.setTag(convertView.getTag());
         }
    editText.setText("hello world");