0

リスト アクティビティに待機サークルを追加したい。この投稿の答えを使用しました: 読み込み中に ImageView で「アニメーション サークル」を使用する

ただし、findViewById を使用できるようにするには、待機中のサークル レイアウトの setContentView を追加する必要があると思います。問題は、同じアクティビティで setContentView を 2 回使用できるかどうかわからないことです。

今試してみると、使用したいリストビューレイアウトのIDで setContentView を最もよく使用しているというエラーが表示されます。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview);}


    public void showCallList() // show call list on screen
{
    getListView().setVisibility(View.GONE);
    findViewById(R.loadingPanel).setVisibility(View.VISIBLE);
    CallListArrayAdapter adapter = new CallListArrayAdapter(this,
            arrayListCalls);
    setListAdapter(adapter);
    findViewById(R.id.loadingPanel).setVisibility(View.GONE);
    getListView().setVisibility(View.VISIBLE);
}

私が得る例外は:

E/AndroidRuntime(4320): 原因: java.lang.RuntimeException: Your content must have a ListView that id attribute is 'android.R.id.list'

4

4 に答える 4

0

独自のカスタムビュー(アニメーション化された円)をレンダリングし、それをアクティビティに追加する場合は、addContentView(View view、ViewGroup.LayoutParams params)を使用する必要があります。これにより、アクティビティに追加のコンテンツビューが追加されます。アクティビティ内の既存のビューの後に追加されます-既存のビューは削除されません。パラメータは次のとおりです。view表示する目的のコンテンツ。paramsビューのレイアウトパラメータ。

ただし、これを行う正しい方法(もちろん、ロードするデータの量によって異なります)は、UIスレッドを適切かつ簡単に使用できるAsyncTaskを使用することです。このクラスを使用すると、スレッドやハンドラーを操作しなくても、バックグラウンド操作を実行してUIスレッドで結果を公開できます。非同期タスクは、バックグラウンドスレッドで実行され、その結果がUIスレッドで公開される計算によって定義されます。非同期タスクは、Params、Progress、Resultと呼ばれる3つのジェネリック型と、onPreExecute、doInBackground、onProgressUpdate、onPostExecuteと呼ばれる4つのステップによって定義されます。たとえば、onPreExecuteメソッドで進行状況ダイアログ(待機サークルとして機能)を呼び出し、doInBackgroundメソッドでファイルを一覧表示できます。幸運を!!!!

于 2012-10-17T20:13:54.207 に答える
0

はい、簡単にできます。

通常のアクティビティの場合と同じようにレイアウトxmlを作成し、このアクティビティ内に。を使用して空のリストビューを作成しますandroid:id=@android:id/list

ListActivityを開始するときに、ContentViewをカスタムレイアウトに設定します。はListActivity、IDを持つlistViewを自動的に検索し、android:id/listそのリストビューをすべてのリスト関連機能に使用します。

ListActivityからの関連テキスト:

ListActivityには、画面の中央にある単一の全画面リストで構成されるデフォルトのレイアウトがあります。ただし、必要に応じて、onCreate()のsetContentView()を使用して独自のビューレイアウトを設定することにより、画面レイアウトをカスタマイズできます。これを行うには、独自のビューにIDが「@ android:id / list」(またはコード内の場合はリスト)のListViewオブジェクトが含まれている必要があります

于 2012-10-17T20:14:37.540 に答える
0

setContentView を再度呼び出すことはできません。代わりに、追加のレイアウトを、ListView も含むメイン XML に追加する必要があります。そこで見つけることができます。

于 2012-10-17T20:08:27.393 に答える
0

実際には、ListView を持つために ListActivity は必要ありません。通常のアクティビティを通常のlayout.xmlで使用することもでき<ListView>、そこに a と必要な他のすべてのビューを配置するだけです。

getListView()ListActivity で定義されているの代わりに、layout.xmlfindViewById()で ListView に指定した ID を持つ法線を使用します。

于 2012-10-17T20:09:22.027 に答える