現在ListViewを使用してアプリを作っているのですが、adapterの更新で不可解な箇所がありましたので質問させていただきます。
ArrayAdapterを継承したMyArrayAdapterクラス内で

public void setData(MessageData mData) {
    this.messageData = mData;
    if (messageData.getMessageList().isEmpty()) {
        this.messageDetailList = messageData.getMessageList();
    }
    notifyDataSetChanged();
}

としています。

データの更新があったらsetDataを呼び出してMyArrayAdapterを更新しているのですが、更新される場合とされない場合があります。

  • MethodAから呼ぶと更新される: getViewが呼ばれてListViewに反映される
  • MethodBから呼ぶと更新されない: 更新されたデータだけgetViewが呼ばれず、ListViewに反映されない(元々入っていた要素に関しては'getView'が呼ばれている)
  • MethodA、MethodBはMainThreadから実行している(各メソッド内でThread確認済み)

ほとんど同じ処理であり、Listデータの数も更新されたものが渡されています。MyArrayAdapterが保持するListデータもMethodAの場合もMethodBの場合もsizeが更新されて数が増えているのですが、MethodBで実行すると新規で追加したデータに関してのみListViewに更新がかからない状態です。
MethodBで呼び出した場合は新規データの箇所のみMyArrayAdapterのgetViewが呼ばれず、
既存のデータに関してはgetViewが呼ばれます。
つまりMethodBの場合は表示が変更されません。

MethodBの実装
Hogeクラス内で

public void MethodB(JSONArray array){
    //JSONからListを取り出す
    ListmessageList=jsonUtil.getMessageDataList(array);
    if(messageList.size()!=0){
        userData.addMessageDataAll(messageList);
        userData=saveDataUtil.setUserData(userData);
        messageData=userData.getMessageData("ID");
        if(messageData!=null){
            //この時点では新規データが入っており更新されている
            messageData.getMessageList().size()="+messageData.getMessageList().size());
            adapter.setData(messageData);
            //ここでlist.getCount()したがサイズが増えていない。
            listView.setSelection(listView.getCount()-1);
        }else{
            Log.e(TAG,"messageData==null");
        }
    }

MethodAの実装

public void MethodA(JSONArray array){
            List detailList=jsonUtil.getMessageDetailList(array);
            Log.d(TAG,"送信したMessageDetail messageDetailList.size="+detailList.size());
            if(detailList.size()!=0){
                MessageDetail detail=detailList.get(0);
                messageData.addMessageList(detail);
                userData.setMessageData(messageData);
                userData=saveDataUtil.setUserData(userData);//userData保存
                messageData=userData.getMessageData("ID");
                if(messageData!=null){
                    adapter.setData(messageData);
                }else{
                    Log.e(TAG,"userData.messageData==null");
                }
                listView.setSelection(listView.getCount()-1);
            }

MethodAとMethodBは共にVolleyのJSONArray取得メソッドから呼び出されています。
この場合どのような状況が考えられるのでしょうか?