【发布时间】:2015-01-07 23:23:55
【问题描述】:
我有两个片段 FragmentA 和 FragmentB。当我点击 FragmentB 中的一个项目时,它会在 fragmentTransaction 中携带一些数据。
FragmentA 有一个自定义列表视图适配器,当有来自 FragmentB 的一些数据时需要更改。
问题是它没有改变。
这是片段A中的代码
public class CardsFragment extends ListFragment {
protected List<CardModel> list = new ArrayList<CardModel>();
protected ArrayAdapter<CardModel> adapter;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_cards, container,
false);
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
adapter = new CardAdapter(getListView().getContext(),
list);
Bundle args = getArguments();
if (args != null) {
LoadCards(args.getString("key"), args.getString("keyId"));
}
else{
LoadAllCards();
}
}
private void LoadAllCards() {
/**
query the database code
**/
list.add(...);
if (getListView().getAdapter() == null) {
setListAdapter(adapter);
} else {
adapter.refill(list);
}
}
private void LoadCards(String key, String keyId) {
/**
query the database code
**/
list.add(...);
if (getListView().getAdapter() != null) {
adapter.refill(list);
}
}
/**
Refill function from adapter class
public void refill(List<CardModel> cards){
list.clear();
list.addAll(cards);
notifyDataSetChanged();
}
**/
}
【问题讨论】:
-
你已经注释掉了 refill(),但是,这是我推荐的代码。
-
补充代码存在于另一个类 CardAdapter.java 中!我评论它是为了演示!
标签: android listview android-fragments android-listview android-adapter