0

リストビューがあり、各アイテムをカウントダウンしたい。私の問題は、カウントダウン時間をスクロールして間違ったアイテムにジャンプするときです(したがって、別のアイテムのカウントダウン時間が表示されます)、韻や理由はありませんか?ここにコードがあります

private final Map<String, TextView> mcounterlist= new HashMap<String, TextView>(); 

次に、アダプターの getview で次のことを行います

String gmtFormat = "yyyy-MM-dd HH:mm:ss";
TimeZone tz = TimeZone.getDefault();
SimpleDateFormat sdf = new SimpleDateFormat(gmtFormat);
sdf.setTimeZone(tz);
Date dd = null;
try {
    dd = sdf.parse(o.endAt);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Date now = new Date();
String sss = timeCalculate((dd.getTime() /1000)- (now.getTime() /1000) ); 
ea.setText("Time Left: " + sss);
TextView cdi =  new TextView();
mcounterlist.put(o.id , cdi);

したがって、この時点で、繰り返しスレッドを実行して更新するだけです。

private final Runnable mRunnable = new Runnable() {
    public void run() {

       // TextView textView;
        String gmtFormat = "yyyy-MM-dd HH:mm:ss";
        TimeZone tz = TimeZone.getDefault() ;
        SimpleDateFormat sdf = new SimpleDateFormat(gmtFormat);
        sdf.setTimeZone(tz);
        // if counters are active


        if(mcounterlist.size() > 0)
        {
        for (int i = 0; i < m_orders.size() && i < mcounterlist.size() ;i++) {
            Order o = m_orders.get(i);   
            TextView c = mcounterlist.get(o.id);

                Date dd = null;
                try {
                    dd = sdf.parse(o.endAt);
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                Date now = new Date();

         long l = (dd.getTime() /1000)- (now.getTime() /1000);
         String sss;
         if (l < 0)
         {
         sss = "ENDED";
         }
         else
         {
             sss = timeCalculate(l);
         }

                if(l < 60 * 60 * 24)
                {
                    c.setBackgroundColor(Color.parseColor("#E3170D"));
                }
                else
                {
                c.setBackgroundColor(Color.parseColor("#00000000"));
                }

             c.setText("Time Left: " + sss);

            }          
        } 




            mHandler.postDelayed(this, 1000);

    }
};

しかし、リストをスクロールすると、テキストビューがあちこちにジャンプします。私の問題の一部は、30 秒ごとにリストを並べ替える方法に関連していると思いますが、アイテムの ID は変わりません。明らかに間違っていることはありますか?

ありがとう。

4

1 に答える 1