-1

そのユーザーarraylistサイズのcommingメッセージを返すgetMessage Webサービスを呼び出すタイマーを開始しましたが、常に正しい数のメッセージを表示しますが、そのメッセージのリストビューに表示すると、最後のメッセージのみが表示され、Webサービスによって送信されます。このコードを使用しています。

public void handleMessage(Message msg) 
    {
        super.handleMessage(msg);

        if(msg.arg1!=RECIEVEFAILURE)
           {
            objrReceiveMessageSiteList =(ArrayList<ReceiveMessageSiteList>)msg.obj;
            System.out.println("objrReceiveMessageSiteList.get(0)"+objrReceiveMessageSiteList.get(0).getMessageStatus());
            System.out.println("objrReceiveMessageSiteList.get(0)"+objrReceiveMessageSiteList.size());
            if(objrReceiveMessageSiteList.size()!=0 && !objrReceiveMessageSiteList.get(0).getMessageStatus().equalsIgnoreCase("No New Message"))
            {
                for(int i=0;i<objrReceiveMessageSiteList.size();i++)
                {
                    objkeyvaluepair.setMessage(objrReceiveMessageSiteList.get(i).getMessage());
                    objkeyvaluepair.setMessageType(objrReceiveMessageSiteList.get(i).getMessageType());
                    objkeyvaluepair.setTimeStamp(objrReceiveMessageSiteList.get(i).getTimeStamp());
                    objkeyvaluepair.setSenderFirstName(objrReceiveMessageSiteList.get(i).getSenderFirstName());
                    objkeyvaluepair.setSenderId(objrReceiveMessageSiteList.get(i).getSenderId());
                    objkeyvaluepair.setRecieverFirstName(objrReceiveMessageSiteList.get(i).getReceiverFirstName());
                    messagerecord.add(objkeyvaluepair);
                    System.out.println("MESSAGE SIZE"+messagerecord.size());
                    System.out.println("MESSAGE---------- findeee"+messagerecord.get(i).getMessage());

                }
                System.out.println("objrReceiveMessageSiteList.get(0)--------------"+objrReceiveMessageSiteList.get(0).getMessageStatus());
                message.setText(""+messagerecord.size());
            }
    }

    }
};

この for ループ arraylist の内部では、syste.out.println. に正しいメッセージが表示されます。しかし、アダプター セット アダプターを送信するときに、正しいサイズを取得しますが、すべてのリスト ビューで最後のメッセージのみを表示します。助けてください

4

2 に答える 2

1

ネストされたループを介して、各反復に同じオブジェクト ( objkeyvaluepair) を追加しています。ArrayListfor

最も内側のforループでは、新しいobjkeyvaluepairオブジェクトを作成し、この新しいオブジェクトをArrayList.

于 2012-05-21T04:37:30.993 に答える
0

このメソッドを次のように変更します。

public void handleMessage(Message msg) 
    {
        super.handleMessage(msg);

        if(msg.arg1!=RECIEVEFAILURE)
           {
            objrReceiveMessageSiteList =(ArrayList<ReceiveMessageSiteList>)msg.obj;
            System.out.println("objrReceiveMessageSiteList.get(0)"+objrReceiveMessageSiteList.get(0).getMessageStatus());
            System.out.println("objrReceiveMessageSiteList.get(0)"+objrReceiveMessageSiteList.size());
            if(objrReceiveMessageSiteList.size()!=0 && !objrReceiveMessageSiteList.get(0).getMessageStatus().equalsIgnoreCase("No New Message"))
            {
                for(int i=0;i<objrReceiveMessageSiteList.size();i++)
                {
                    //Create Local object of the Objkeyvaluepair here, for example
                    //ObjectKeyValuePair objkeyvaluePair=new OjectKeyvaluePair();
                    objkeyvaluepair.setMessage(objrReceiveMessageSiteList.get(i).getMessage());
                    objkeyvaluepair.setMessageType(objrReceiveMessageSiteList.get(i).getMessageType());
                    objkeyvaluepair.setTimeStamp(objrReceiveMessageSiteList.get(i).getTimeStamp());
                    objkeyvaluepair.setSenderFirstName(objrReceiveMessageSiteList.get(i).getSenderFirstName());
                    objkeyvaluepair.setSenderId(objrReceiveMessageSiteList.get(i).getSenderId());
                    objkeyvaluepair.setRecieverFirstName(objrReceiveMessageSiteList.get(i).getReceiverFirstName());
                    messagerecord.add(objkeyvaluepair);
                    System.out.println("MESSAGE SIZE"+messagerecord.size());
                    System.out.println("MESSAGE---------- findeee"+messagerecord.get(i).getMessage());

                }
                System.out.println("objrReceiveMessageSiteList.get(0)--------------"+objrReceiveMessageSiteList.get(0).getMessageStatus());
                message.setText(""+messagerecord.size());
            }
    }

    }
};
于 2012-05-21T04:24:53.670 に答える