0

listview以下は、 3 を含むデータを表示するためのコードとスクリーンショットを示していますtextview

getView()クラスのメソッドで次のコードを試して、Adapter背景画像を交互の行、つまり行番号に割り当てました。0、2、4など

これを実装しようとすると、スクリーンショットに示すような出力が得られます。つまり、行が適切に影響を受けません。

また、パラメータが使用されxmlている以下を参照してください。ボタンをクリックしても、2番目と3番目は背景色を適切に取得していません。alignTopalignBottomIndextextview

Index編集 - 背景に画像の代わりに色を使用すると、ボタンを除くすべてのケースでうまく機能します。

if (count % 2 == 0) {

    try {

        InputStream is = ctx.getAssets().open("cellbg.png");
        Drawable d = Drawable.createFromStream(is, "cellbg");
        holder.txtFirst.setBackgroundDrawable(d);
        holder.txtSecond.setBackgroundDrawable(d);
        holder.txtThird.setBackgroundDrawable(d);
        Log.v("count=", "" + (count++));

    } catch (Exception e) {
        throw new Error(" exception in TableListAdapter " + e.getMessage());
    }
} else {
    Log.v("else count==", "" + (count++));
}      

リスト構造(xml)

<TextView
        android:id="@+id/FirstText"
        android:layout_width="80dp"
        android:layout_height="wrap_content"/>
    
    <TextView
        android:id="@+id/SecondText"
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/FirstText"
        android:layout_alignBottom="@+id/FirstText"/>
    
    <TextView
        android:id="@+id/ThirdText"
        android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/FirstText"
        android:layout_alignBottom="@+id/FirstText"/>

最初の画面は、アプリケーションの起動時のリスト構造を示しています。デフォルトでは、Gainersボタンが押されています。

2番目は、ボタンを押すインスタンスを示していIndexます。

Gainers3番目は、インデックスボタンを押した後、もう一度ボタンを押すインスタンスを示しています。

List item4 番目は、をクリックしたときのレイアウトを示しています。

私は何を間違っていますか?

どんな助けでも命の恩人になります!!!

画面

4

3 に答える 3

1

いくつかのこと....さまざまなボタンが何であるか、そしてそれらが何をするかはわかりませんが、それは重要ではありません...

(count % 2 != 0)ビューをリストで再利用できる場合にも背景を設定する必要があります。これにより、安全性が向上します。

また、異なるものの背景をTextViews個別に設定するのではなくViewGroup、それらすべてを含むものだけに設定してみませんかTextViews(私はそのようなものを想像しLinearLayoutます)?

念のために言っておきますが、呼び出されcountたときに得られる引数は何ですか?getViewたぶん、あなたはあなたのメソッドのもう少し多くのコードを投稿することができますgetView、それはおそらく助けになるでしょう(より良い答えを得るために)。

于 2012-01-07T07:24:38.750 に答える
1

これはビューの再利用の問題のように見えますが、コードのその部分が表示されないため、確信が持てません。ビューを再利用しますgetViewか (つまり、convertViewパラメーターを利用しますか)? もしそうなら、それがあなたの答えです。背景を常に希望の色に設定する必要があります。このようなもの:

if (count % 2 == 0) {
    ...
    holder.txtFirst.setBackgroundDrawable(d);
} else {
    holder.txtFirst.setBackgroundDrawable(myDefaultRowColor);
}
于 2012-01-07T08:43:14.027 に答える
0

あなたはsetbackgrounddrawableを使用していますが、画像を設定するには以下のコードを使用する必要があると思います

holder.txtFirst.setImageResource(R.drawable.Imagename);
于 2012-01-07T07:33:36.923 に答える