1

私のシナリオは、SQLite DB に格納されているカーソルを表示するアクティビティがあることです。メイン レイアウトには、上部に textview と listview が含まれています。次に、simplecursoradapter を使用してカーソルを listadapter に入力し、listadapter を listview に配置します。simplecursoradapter は別のレイアウトを使用します。問題は、simplecursoradapter を使用すると、項目名、日付、価格などの 3 つの列がリストビューに表示されることです。これらの値を変更しなければ問題ありません。

実際には、価格に文字列を追加して、通貨記号などの新しい文字列を形成したいと考えています。私の理解によると、2 つのレイアウトではなく 1 つのレイアウトに対してのみ ContentView を設定できます。また、新しいレイアウトを入力して値を設定しようとしましたが、失敗しました

LayoutInflater インフレータ = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View textEntryView = inflater.inflate(R.layout.itemlist, null); TextView 価格 = (TextView) textEntryView.findViewById(R.id.price); price.setText(currency + c.getString(4).toString());

構文やアプリの実行にも問題はありません。しかし、アプリを実行してリストビューを確認すると、通貨記号を追加せずに価格のみが表示されます。simplecursadapter で使用される 2 番目のレイアウトではなく、メイン レイアウトの下にのみ通貨記号を追加できます。

実際、通貨はユーザー設定で選択され、sharedpreference を使用してその値を取得し、カーソルの価格値に追加します。simplecursoradapter は別のレイアウトを使用しているようで、それはできません。

誰かがこのケースについてアイデアを持っていますか?

同様のアプローチのためにメソッドとコードが提供されれば幸いです。

ありがとう !!

4

2 に答える 2

0

私はあなたの質問に 100% 従っているかどうか確信が持てないので、これはあなたが探している答えではないかもしれません。

リスト ビューでアイテムのレイアウトがどのように表示されるかを制御したい場合は、次の独自のカスタム実装を作成する必要がありますArrayAdapter

任意のオブジェクトの配列に基づく ListView を管理する ListAdapter。(...) 配列表示に TextViews 以外のもの、たとえば ImageViews を使用するか、toString() の結果以外のデータの一部をビューに表示するには、getView(int, View, ViewGroup) をオーバーライドして型を返しますあなたが望むビュー。

カスタム arrayadapter exampleをグーグルで検索すると、これを実装する方法を示す十分な例が見つかるはずです。そのような 2 つの例は次のとおりです。

幸運を :)

于 2010-12-19T11:57:28.553 に答える
0

最後に、bindview を使用して問題を解決しました。私の質問では、配列ではなく SQLiteDB からデータを取得するために simplecursoradapter を使用することを既に述べました。arrayadapter が機能することは知っていますが、SQLite では効率的に機能しません。baseadapter を拡張して独自のデザインを作成し、テキストビューにカスタム ビューを追加する前に。機能しますが、データが多い場合は遅すぎます。したがって、simplecursadapter の方が効率的です。

私は独自の目的で simplecursadapter を拡張し、bindview をオーバーライドしました。それは私が必要とするもののために働きます。

あなたの助けとarrayadapterへのリンクをありがとう

于 2010-12-22T09:29:48.943 に答える