0

別のスレッドから ListView を表示しようとしていますが、ここで何が欠けているのかわかりません。これは handleMessage() アプローチです。タイマーと runOnUiThread() スキームも作成しようとしましたが、何も表示されません。このアクティビティ全体を再度呼び出すだけで機能するため、リストビュー自体に問題がないことは確かです(ただし、そのデザインは使用したくありません)。ヒントをいただければ幸いです...

public void ShowList(String[] list)
{
    for (String val : list)
        Log.d(TAG, "ShowList: list = " +val);

    // Set up the list view
    GuideAdapter = new ArrayAdapter<String>(this, R.layout.main, android.R.id.list, list);

    setListAdapter(GuideAdapter);
    Log.d(TAG, "ShowList: Created setListAdapter...");

    // Get an object for the list
    ListView listView = getListView();
    listView.setTextFilterEnabled(true);
    listView.setCacheColorHint(0);

    listView.setOnItemClickListener(new OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
        {
        }
    });
}

Handler mHandler = new Handler(new Handler.Callback()
{
    @Override
    public boolean handleMessage(Message msg)
    {
        if (msg.what == STATE_GUIDE) {              
        ShowList(ChannelList);
        }

    return true;
    }
});

public class MyThread extends Thread
{
    public MyThread()   {
    }

    public void run()   {
        ...
        mHandler.sendEmptyMessageDelayed(STATE_GUIDE, 0);
    }
}
4

1 に答える 1

0

次のコードを変更

// Set up the list view
GuideAdapter = new ArrayAdapter<String>(this, R.layout.main, android.R.id.list, list);

次へ

// Set up the list view
GuideAdapter = new ArrayAdapter<String>(this, android.R.id.list, list);

また、ShowList(ChannelList); を呼び出さないでください。あなたのハンドラで。onCreate メソッドで呼び出します。ArrayAdapter は、1 つのアクティビティで複数回呼び出すことはできないためです。

于 2013-11-09T08:45:24.460 に答える