ListView
にはカスタムArrayAdapterがあります。 すべて正常に動作しますが、最初のアップデートでは空になります。android ArrayAdapter.clear()はカスタムメソッドの変数を消去します
マイ配列アダプタ:私は私の値を更新すると
protected class ResultArrayAdapter extends ArrayAdapter<JsonObject> {
private ArrayList<JsonObject> values;
protected ResultArrayAdapter(ArrayList<JsonObject> values) {
super(context, R.layout.content_result_item, values);
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) { ... }
public void updateValues(ArrayList<JsonObject> values) {
//here values.size() > 0 and everything OK
this.clear();
//here values.size() == 0, why??
for (JsonObject value : values) {
this.add(value);
}
this.notifyDataSetChanged();
}
}
、私はupdateValues()
を呼び出し、this.clear()
を呼び出した後も、このメソッドのパラメータArrayList<JsonObject> values
は空です。したがって、this.add(value)
で追加する値はありませんが、初めての場合はonUpdate()
の後になります。
ArrayList<JsonObject> values
の名前を変更するか、別のパラメータに保存することは役に立ちません。
ArrayAdapterはコンストラクタとclearメソッドで渡されたArrayList参照を格納するので、それをクリアします(必ずしもフィルタリングに気付かないでください!!!)... addの後にアダプタを通知する必要はありません方法。代わりに値を更新するaddAllメソッドを使用して – Selvin
私は正しいとは思わない "これをクリア"、あなたはArrayListをクリアする必要があります。 –
oscargc