Android で ListView とそのヘッダーに苦労しています。私は ListFragment を使用しており、onViewCreated でこれを行っています:
View header = getActivity().getLayoutInflater().inflate(R.layout.route_list_header, null);
header.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT,
ListView.LayoutParams.WRAP_CONTENT));
getListView().addHeaderView(header);
RouteAdapter adapter = new RouteAdapter(getActivity(), routes);
setListAdapter(adapter);
getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MapFragment fragment = new MapFragment();
fragment.showRoute(routes.get(position - 1).getRoutePoints());
getActivity().getFragmentManager().beginTransaction().addToBackStack("map")
.replace(R.id.content_frame, fragment).commit();
}
});
問題なく動作しますが、別のフラグメントに変更してから戻るボタンを押すと問題が発生します。以前 (フラグメントを停止する前) に setAdater を既に呼び出しているため、ヘッダーを再度追加することはできません。私に何ができる?