2

私は古典的なデザインを持っていますListActivity-カーソルローダーを介してデータをフェッチするデザイン。ListFragmentListFragment

基本的な取り決めには2つの可能な結果があります-

カーソルが空であるか、データがあります。

データを使用するlist_row.xmlと、データベースのアイテムが入力されます。

空の場合、ユーザーの情報がない空白の画面が表示されます。

TextView <i>"No records found message"</i>ListFragmentから表示または非表示にできる設定をしました。問題は:

  1. ListFragmentは、ListActivityのビューにアクセスできません。
  2. ListFragmentから次のListActivityメソッドを呼び出すにはどうすればよいですか?
    public void updateView(boolean data){

        if(データ){         
             noRecordsFound.setVisibility(View.GONE);       
        } そうしないと {            
             noRecordsFound.setVisibility(View.VISIBLE);
        }
    }   

のからアクセスしようとしましたonLoadFinishedが、アクセスできListFragmentません。何か助けはありますか?

4

2 に答える 2

1

別のアプローチをしてくれたMHに感謝しますが、私は自分の質問に対する答えにぶつかりました。MHの答えは私の場合に最も適していると思いますが、誰かがリストビュー以外の目的でそれを使用する必要がある場合に備えて、最初にやりたかったことに対する解決策を含めます。

さて、私はカーソルローダーのif (cursor.getCount() < 1)中にブロックを含めました。onLoadFinished()

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {

    if (cursor.getCount() < 1) {

        TextView noNotes    = (TextView) getActivity().findViewById(R.id.noNotes);
        noNotes.setVisibility(View.GONE);
    }
    adapter.swapCursor(cursor);
}
于 2012-04-19T10:01:22.853 に答える
0

以前のコメントによると:

ビューはアクティビティではなくフラグメントのレイアウトの一部である必要があるため、最初の問題はよくわかりません。

「空の」メッセージの切り替えに関して:またはsetEmptyView(...)の組み込み機能(サポートライブラリでも利用可能)を使用してみませんか?1つ目は、必要に応じて、空のメッセージのより複雑なビュー階層を表示できるようにします。ListViewsetEmptyText(...)ListFragment

于 2012-04-17T19:13:48.257 に答える