ユーザーが1つのアクティビティを閉じて前に戻ると、リストの更新に問題があります。問題は非常に一般的ですが、解決できません。
onResumeメソッドをオーバーライドしました:
@Override
public void onResume() {
super.onResume();
populateList();
}
PopulateList()は、listViewに文字列のリストを入力するメソッドです。
arrayAdapter = new CustomArrayAdapter(this, R.layout.symbol_item,list);
listView.setAdapter(arrayAdapter);
問題は、2番目のアクティビティが閉じられると、新しいアイテムがListViewに再度追加されるため、すべてのアイテムが2倍になることです。リフレッシュされていないように。
notifyDataSetChanged()をonResume()に入れると、アクティビティが最初に開始されたときにアダプターが初期化されていないため、nullPointerExceptionがスローされます。
これをどう処理するかわかりません。
public class testActivity extends Activity {
private int id=1;
private ListView listView;
private CustomArrayAdapter arrayAdapter;
private ArrayList<String> list = new ArrayList<String>();
ArrayList<Item> objectList = new ArrayList<Item>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
}
@Override
public void onResume() {
super.onResume();
populateList();
}
private void populateList() {
try {
objectList = new GetAsyncTask(id).execute();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int size = objectList.size();
String name;
for (int i = 0; i < size; i++) {
name = objectList.get(i).getName();
list.add(name);
}
arrayAdapter = new CustomArrayAdapter(this, R.layout.symbol_item,
list);
listView.setAdapter(arrayAdapter);
}
}