我将这张cardlibs列表视图放在一个片段中。
我有一些动态数据通过主要活动进入。
当我第一次使用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中,我从包中获取arg /解析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();
}
我在片段方法中添加了Log语句,所以我肯定知道这些调用 正在经历,列表实现中只有一些东西,就是这样 混合。是什么给了什么?
答案 0 :(得分:1)
从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."