2012-05-21 3 views
-1

getMessage webservice를 호출하는 타이머를 시작합니다. 해당 사용자에게 경고 메시지를 반환합니다. arraylist 크기는 항상 올바른 메시지 수를 표시하지만, 해당 메시지의 목록보기에 표시 할 때 마지막 메시지 만 표시합니다. 웹 서비스에서 전송합니다.이 코드를 사용합니다. 어댑터 세트 어댑터를 보낼 때 루프의 ArrayList이 내부 listview에서 arraylist의 마지막 값을 항상 표시하는 이유는 무엇입니까?

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()); 
      } 
    } 

    } 
}; 

오른쪽 크기를 가지고 있지만, 나에게

답변

0

도움 view.please 모든 목록 만 마지막 메시지를 표시 syste.out.println.but에서 바로 메시지를 보여주고있다 다음에이 방법을 변경

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()); 
      } 
    } 

    } 
}; 
1

을 내포 forArrayList 루프를 통해 각각의 반복에 대해 동일한 물체 (objkeyvaluepair)을 첨가한다.

가장 내부의 for 루프에서 objkeyvaluepair 개체를 새로 만든 후이 새 개체를 ArrayList에 추가해야합니다.

관련 문제