私はこの 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 では、バンドルから引数を取得し、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 ステートメントを追加したので、確実に呼び出しが行われていることがわかります。リストの実装に何かが混じっているだけです。何を与える?