3

TextViewをリアルタイムで更新する際に問題が発生しています。TextViewカスタム アダプタを使用してのListViewをリアルタイムで更新したいと考えています。JSON メッセージを受信するソケット I/O ハンドラがあります。この JSON を解析し、そのテキストを特定のリスト行にsetText(). ListViewその行のインデックスを取得して更新するにはどうすればよいTextViewですか?

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

これが私の解決策です:

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;
    }
}
4

1 に答える 1

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();
于 2013-02-28T21:10:18.853 に答える