2013-02-28 3 views
4

У меня возникла проблема с обновлением TextView в режиме реального времени. Я хочу обновить TextViewListView с помощью пользовательского адаптера в режиме реального времени. У меня есть обработчик ввода/вывода сокетов, на который я получаю сообщение JSON. Я хочу разобрать этот JSON и поместить этот текст в конкретную строку списка с setText(). Как получить индекс этой строки ListView и обновить ее TextView?Обновление TextView в ListView в режиме реального времени

responseid=object.getString("ResponseID"); 
if(responseid!=null){ 
    for(int j=0;j<countryList.size();j++){ 
     //If the countryList row match then i want to update the textView of that particular row 
     if(countryList.get(j).getName().equals(caseid)) {       
      int oldcount = Integer.parseInt((dataAdapter.findViewById(R.id.replycount)).getText().toString()); 
      int total=oldcount+1; 
      (dataAdapter.findViewById(R.id.replycount)).setText(Integer.toString(total)); 
      dataAdapter.notifyDataSetChanged(); 
     } 
    }  
} 


//Here is my solution 



for(int j=0;j<countryList.size();j++) 
           {        
             if(countryList.get(j).getName().equals(caseid)) 
             {              
              String oldcount = countryList.get(j).getCount(); 
              int oldcountint = Integer.parseInt(oldcount); 
              int newcount = oldcountint + 1;                                
              countryList.get(j).setCount(Integer.toString(newcount));           
              dataAdapter.notifyDataSetChanged(); 
              break; 
             }         
           } 

ответ

8

Вы должны изменять элементы в вашей ListAdapter, а затем вызвать notifyDataSetChanged().

Пример:

//Creating and adding ListAdapter to ListView 
MyObject myFirstObject = new MyObject("Test1"); 
MyObject mySecondObject = new MyObject("Test2"); 

MyAdapter myAdapter = new MyAdapter(); 
myAdapter.add(myFirstObject); 
myAdapter.add(mySecondObject); 
myListView.setAdapter(myAdapter); 

При обновлении конкретной позиции:

myAdapter.getItem(position).text = "My updated text"; 
myAdapter.notifyDataSetChanged(); 
+0

позвольте мне попробовать это один – Nik

+0

@Neik Haarman спасибо –

Смежные вопросы