我有一个片段形式的cardlibs listview。
我有一些通过主活动传入的动态数据。
当我第一次使用listview调用片段来填充卡片时,一切都很好。它显示了.我将函数设置为检查片段是否被激活,如果是,则在片段内调用一个方法,该方法应将另一个卡片添加到列表中。
主机活动
public void pushToFeedFromActivity(JSONObject msg){
FragmentManager fragmentManager = getFragmentManager();
if (!myFeedActive) {
myFeedActive = true;
Bundle argsScene = new Bundle();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.feedInnerParent, FragFeed.newInstance(msg), "myfeed");
fragmentTransaction.commit();
}else {
FragFeed fragFeed = (FragFeed) getFragmentManager().findFragmentByTag("myfeed");
fragFeed.pushToFeed(msg);
}
};
@OnClick(R.id.PushToFeedButton)
public void presstoPushToFeed(View v) {
pushToFeedFromActivity(json)
......在onActivity中,我从捆绑包/解析json中获取参数,并将其传递给将卡片添加到列表中的方法,就像我说过的那样,这些指令在第一次添加片段时起作用,但在后续的时候就不起作用了,因为只有方法是从活动中直接调用的。
片段
public void onActivityCreated(Bundle savedInstanceState) {
....
pushToFeed(jsonFromString);
.....
}
public void pushToFeed(JSONObject json) {
Log.v(TAG + "pushtofeed", json.toString());
if (json != null) {
try {
body = jsonFromString.get("stdin").toString();
lo = jsonFromString.get("lo").toString();
channel = jsonFromString.get("channel").toString();
} catch (JSONException e) {
e.printStackTrace();
}
}
{
ArrayList<Card> cards = new ArrayList<Card>();
{
SceneCard card = new SceneCard(getActivity());
//CardHeader header = new CardHeader(getActivity());
card.setClickable(true);
//card.addCardHeader(header);
card.setSceneCardloqoo(loqoo);
card.setSceneCardmsgbody(body);
card.setSceneCardchannel(channel);
card.getSceneCardtime();
cards.add(card);
}
CardArrayAdapter mCardArrayAdapter = new CardArrayAdapter(getActivity(), cards);
CardListView listView = (CardListView) getActivity().findViewById(R.id.fragFeedList);
if (listView != null) {
listView.setVerticalScrollBarEnabled(false);
listView.setAdapter(mCardArrayAdapter);
Log.v(TAG + "pushtofeed - listview", json.toString());
}
mCardArrayAdapter.notifyDataSetChanged();
}我已经在fragment方法中添加了Log语句,所以我确定调用正在进行,只是list实现中有一些东西,这是混淆的。怎么回事?
发布于 2014-10-01 21:58:23
来自lib的创建者本人,通过github问题的方式来解决...
https://github.com/gabrielemariotti/cardslib/issues/313
@gabrielemariotti commented:
"In your code, you are using listView.setAdapter(mCardArrayAdapter); each time.
This code will remove all views from the list view.
In your case if you want to add new items to an existing adapter,
you have to retrieve your adapter, add the new items,
calls the notifyDataSetChanged, without using listView.setAdapter again."https://stackoverflow.com/questions/26140742
复制相似问题