마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

db값 리스트뷰로 가져오기 질문합니다.

0 추천
public class ViewText extends ListActivity {
  public void onResume(){
     super.onResume();
    View();
 }
 private void View() {
  Thread thread = new Thread(new Runnable() {
   @Override
   public void run() {
   try {
     ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(1);            
     HttpResponse httpResponse = client.execute(post);      
      parserHandler.sendMessage(message);
     }     
   }
  });
  thread.start();
 }

 private Handler parserHandler = new Handler() {
  public void handleMessage(Message msg) {
   XMLReader((String) msg.obj);
  }
 };

 private void XMLReader(String xml) {
  try {
   DocumentBuilderFactory DBfactory = DocumentBuilderFactory
     .newInstance();
   DBfactory.setValidating(false);
   DBfactory.setNamespaceAware(true);
   DocumentBuilder DBbuilder = DBfactory.newDocumentBuilder();
   Document document = DBbuilder.parse(new InputSource(
     new StringReader(sb.toString())));
   Element order = (Element) document.getDocumentElement();
   NodeList indlist = order.getElementsByTagName("index");
   NodeList viewMsg = order.getElementsByTagName("message");
   NodeList viewSub = order.getElementsByTagName("subject");
   NodeList viewId = order.getElementsByTagName("userid");
   NodeList viewD = order.getElementsByTagName("date");
   NodeList comlist = order.getElementsByTagName("comment");
   NodeList cidlist = order.getElementsByTagName("com_userid");
   NodeList cdatelist = order.getElementsByTagName("com_date");
   
   String msgstr = viewMsg.item(0).getFirstChild().getNodeValue();
   msgstr = msgstr.replaceAll("___", "\n");
   String substr = viewSub.item(0).getFirstChild().getNodeValue();
   substr = substr.replaceAll("___", "\n");
   String idstr = viewId.item(0).getFirstChild().getNodeValue();
   String datestr = viewD.item(0).getFirstChild().getNodeValue();
   
   RecvID.setText(idstr); 
   viewMessage.setText(msgstr);
   viewSubject.setText(substr);
   viewDate.setText(datestr);
   int i = 0;
   clist = new ArrayList<ListData>();
   while (i < comlist.getLength()) {
    comstr = comlist.item(i).getFirstChild().getNodeValue();
    cidstr = cidlist.item(i).getFirstChild().getNodeValue();
    cdatestr = cdatelist.item(i).getFirstChild().getNodeValue();
    comstr = comstr.replaceAll("___","\n");
    ListData adddata = new ListData(comstr,cidstr,cdatestr);
    clist.add(adddata);
    i++;
   }
   cadapter = new TextAdapter(this,android.R.layout.simple_list_item_1, clist);
   setListAdapter(cadapter);
 }

 private class TextAdapter extends ArrayAdapter<ListData> {           
  ArrayList<ListData> items;           
  public TextAdapter(Context context, int textViewResourceId, ArrayList<ListData> items) {                 
   super(context, textViewResourceId, items);                 
   this.items = items;         
   }         
  @Override        
  public View getView(int position, View convertView, ViewGroup parent) {       
   final int pos = position;             
   if (convertView == null) {                     
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);                     
    convertView = vi.inflate(R.layout.clist_row, null);                 
    }                 
   ListData list = items.get(position);   
   TextView viewcID = (TextView) findViewById(R.id.tv_cid);
   TextView viewCom= (TextView) findViewById(R.id.txt_com);
   TextView viewcDate= (TextView) findViewById(R.id.tv_cdate);  
   if (list != null) {                 
    if (viewCom != null){                             
     viewCom.setText(list.mComment);                                                     
    }                         
    if(viewcID != null){                                 
     viewcID.setText(list.mID);                        
    }          
    if(viewcDate != null){                                 
     viewcDate.setText(list.mDate);                        
    }       
   }
   return convertView;         
  } 
 }
}

레이아웃은 텍스트뷰가있고 그 아랫쪽에 리스트뷰가 위치합니다 리스트뷰 즉 댓글 부분이 맨 위의 1개 값은 잘 나오는데 나머지 댓글은 모두 값이 나오지 않고 설정해놓은 초기값으로 나옵니다. 그런데 리스트 뷰 스크롤을 위아래로 왓다갓다 하면 값이 나오는듯 하다가 뒤죽박죽 섞입니다. 이거 왜 이런걸까요ㅠ

sd156 (200 포인트) 님이 2014년 6월 13일 질문

1개의 답변

0 추천
convertView가 널일경우 저부분 분기 없애보세요~ 뷰 재사용관련 문제 같습니다..
YeonMin (17,860 포인트) 님이 2014년 6월 14일 답변
...