3

私は2つのarraylistを持っています。1つは出発リストで、もう1つは到着リストです。このリストを表示したいです

または、10秒後にリストが自動的に変更されることを意味します

最初の 10 秒の出発リストと次の 10 秒の到着リスト ここにコードを配置します。usint runnable を試しますが、このコードを実行するとアプリがハングします

ホームアクティビティ.java

  final int []sliderImageArray={R.drawable.banner,R.drawable.banner01,R.drawable.banner02};
        final int []footerImageArray={R.drawable.bottomadv,R.drawable.sandwich,R.drawable.underbig};
        try 
        {

            Log.e("Land Scape Run","");
            Log.e("LandScape  Run","Handler ");
                final Handler imagehandler = new Handler();

                Runnable runnable;

                runnable = new Runnable()
                {

                    int i=0;
                    public void run()
                    {   // slider image run
                        imageslider.setImageResource(sliderImageArray[i]);  //Log.e("Image Run",""+sliderImageArray[i]);
                        i++;
                        if(i>sliderImageArray.length-1)
                        {
                                i=0;    
                                clear();
                        }
                        imagehandler.postDelayed(this, 4000); // for interval
                    }

                };
                imagehandler.postDelayed(runnable,10);

                final Handler footerimagehandler =new Handler();
                runnable = new Runnable()
                {   
                    int j=0;
                    public void run()
                    {   // footer image run
                        imagefooter.setImageResource(footerImageArray[j]); //   Log.e("Image Run",""+footerImageArray[j]);
                        j++;
                        if(j>footerImageArray.length-1)
                        {
                                j=0;    
                                clear();
                        }
                        footerimagehandler.postDelayed(this, 5000); // for interval
                    }
                };

                footerimagehandler.postDelayed(runnable, 10);


                // For ListView Change after 10 seconds;
                final Handler listhandler= new Handler();
                runnable = new Runnable() {

                    public void run() {
                        // departure flight list

                                if(!flightList.isEmpty())
                                {
                                        int displaymode=getResources().getConfiguration().orientation;
                                        if(displaymode==1)
                                        {
                                                textviewinfo.setText("Departure Flight List");
                                                ListAdapter adapter = new SimpleAdapter(HomeActivity.this,flightList,
                                                        R.layout.listportrait,
                                                        new String[] { TAG_MDESTINATION, TAG_MFLIGHT, TAG_MAIRLINE,TAG_MSCHEDULE,TAG_MTERMINALGATE,TAG_MFSTATUS  }, new int[] {
                                                                R.id.textdestination, R.id.textflight, R.id.textairline,R.id.textschedule,R.id.texttermgate,R.id.textstatus });
                                                setListAdapter(adapter);

                                        }
                                        else
                                        {
                                               textviewcity.setText(textcity);
                                               textviewairport.setText(textairport);
                                               textviewinfo.setText("Departure Flight List");

                                            ListAdapter adapter = new SimpleAdapter(HomeActivity.this,flightList,
                                                    R.layout.list,
                                                    new String[] { TAG_MDESTINATION, TAG_MFLIGHT, TAG_MAIRLINE,TAG_MSCHEDULE,TAG_MTERMINALGATE,TAG_MFSTATUS  }, new int[] {
                                                            R.id.textdestination, R.id.textflight, R.id.textairline,R.id.textschedule,R.id.texttermgate,R.id.textstatus });
                                            setListAdapter(adapter);

                                        }
                                }listhandler.postDelayed(this,1000);// if loop complete departure
                            // arrival flight list
                                if(!arrivalList.isEmpty())
                                {

                                        int displaymode=getResources().getConfiguration().orientation;
                                        if(displaymode==1)
                                        {
                                            text1.setText("Origin");
                                            text4.setText("Arrival");
                                            textviewinfo.setText("Arrival Flight List");

                                                ListAdapter adapter = new SimpleAdapter(HomeActivity.this,arrivalList,
                                                        R.layout.listportrait,
                                                        new String[] { TAG_MDESTINATION, TAG_MFLIGHT, TAG_MAIRLINE,TAG_MSCHEDULE,TAG_MTERMINALGATE,TAG_MFSTATUS  }, new int[] {
                                                                R.id.textdestination, R.id.textflight, R.id.textairline,R.id.textschedule,R.id.texttermgate,R.id.textstatus });
                                                setListAdapter(adapter);

                                        }
                                        else
                                        {
                                                text1.setText("Origin");
                                                text4.setText("Arrival");
                                                textviewinfo.setText("Arrival Flight List");

                                            ListAdapter adapter = new SimpleAdapter(HomeActivity.this,arrivalList,
                                                    R.layout.list,
                                                    new String[] { TAG_MDESTINATION, TAG_MFLIGHT, TAG_MAIRLINE,TAG_MSCHEDULE,TAG_MTERMINALGATE,TAG_MFSTATUS  }, new int[] {
                                                            R.id.textdestination, R.id.textflight, R.id.textairline,R.id.textschedule,R.id.texttermgate,R.id.textstatus });
                                            setListAdapter(adapter);

                                        }
                                }listhandler.postDelayed(this,100);// if complete arrrival

                    }
                };
                listhandler.postDelayed(runnable, 10);
4

2 に答える 2

3
Handler handler = new Handler();

handler.postDelayed(new Runnable() {
@Override
public void run() {

//do anything


}
}, 10000);

このコードはほとんど同じです。recursive call10秒の遅延で両方のメソッドの''を作成しようとすることができます

于 2012-12-13T07:31:31.180 に答える
2

私は常に新しいListAdaptersを作成するとは限りません。出発用と到着用に1つずつ作成し、それらをメモリに保持します。次に、UIThreadのListViewでアダプターを交換するだけです。アダプターの交換はUIに影響を与えるため、これはUIThreadで実行する必要があります。次に、現在バックグラウンドで使用されていないアダプターのデータを更新します。最終的に、データを最新の状態に保つために必要なバックグラウンドスレッドは1つだけです。

ただし、通常は、ローダーとオーバーセラーとオブザーバーを読んで、このアプローチを試してみてください。Androidは、複雑なスレッド化とスレッド同期をすべて取り除くだけでなく、拡張可能でプラットフォームに準拠した優れたアプローチを採用しています。

于 2012-12-13T07:29:00.130 に答える