2

私はAndroidプログラミングの初心者ですが、私を助けてくれないかと思っていました。

ListFragmentがあります:

public class AdvertFrag extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor>

loaderManagerを使用してデータベースからデータを入力しています。これは正常に機能し、広告の詳細を表示しますが、いくつかの計算(経度と緯度による距離の計算)を行ってから、各AdvertFragに店舗の場所までの距離を表示したいと思います。

フラグメント内のTextViewでsetText()を使用することを検討し、ビューが存在するようにonCreateViewメソッドを最初に呼び出すことを許可する必要があることを読みました。私は以下のコードを試しました:

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.row, container, false);
        if(view == null)
        {
            Log.i("TEST","null");
        }
        else
        {
            distance = (TextView) view.findViewById(R.id.distance);
            distance.setText("the distance will go here");
        }
        return view;
    }

ただし、「コンテンツには、id属性がandroid.R.id.listであるListViewが必要です。OnCreateViewが次を呼び出すことを許可する必要があります。

return super.onCreateView(inflater, container, savedInstanceState);

正常に動作します。

だから私の質問は、私は何が間違っているのですか?また、ListActivityでsetTextを機能させるにはどうすればよいですか?それとも私はそれを完全に間違った方法で行っていますか?

有用な場合の追加情報:

私のrow.xmlには、ローダーによって入力されるテキストビューと、距離の追加のテキストビューが含まれています。

次のように、XMLにフラグメントを含むfragmentActivityがあります。

<fragment 
        ...
        android:name="com.example.goclub.AdvertFrag"
        .../>
4

1 に答える 1

0

user113215 が言ったように、リスト項目内のウィジェットを変更する場所ではありませんonCreateView()。使用していると仮定して、そのListFragmentためのカスタムを作成する必要があります。CursorAdapterこれに関する素晴らしいチュートリアルを見つけることができますhere . 基本的には aSimpleCursorAdapterを拡張し、メソッドを変更しbindViewます。

于 2012-12-01T21:17:33.513 に答える