0

listviewに3のtextviewを含むデータを表示するためのコードとスクリーンショットを示します。getViewメソッドで背景イメージを正しく設定できません

getView()の方法でAdapterクラスの次のコードを試してみました。 0,2,4、等。

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

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

EDIT - 画像の代わりに背景色を使用すると、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ボタンが押されたアプリケーションの起動、の時にリスト構造を示しています。

2ndはIndexボタンを押す例を示します。

3rdは、インデックスボタンを押した後にGainersボタンを再度押す例を示しています。

4thはList itemをクリックしたときのレイアウトを示しています。

私は間違っていますか?

すべてのヘルプは生き残りになります!

screen

答えて

1

物事のカップル....何異なるボタンであり、彼らは何をすべきか、それは問題ではないはずわからない...

とき(count % 2 != 0)また、背景を設定する必要がありますので、ビューはリスト内で再利用できるため、より安全です。

また、代わりに個別に異なるTextViewsの背景を設定するので、なぜだけそれらすべてTextViewsが含まれていViewGroupのためにそれを設定していない(私はLinearLayoutまたはそのような何かを想像しますか)?

getViewが呼び出されると、countが取得する引数になりますか? あなたのgetViewメソッドのコードをもう少し投稿すればいいでしょう。

+0

THANKS A TON BUDDYは...ただ、 'holder.l1.setBackgroundDrawable(d)を追加;'それぞれのTextViewの背景を設定する代わりに、それが働きました。 しかし、このケースではテーブルbgが自動的に使用されるため、(カウント%2!= 0)バックグラウンドを設定する必要がありませんでした。 – GAMA

+0

これはすべてgetViewメソッドに依存します。ビューを再利用する必要がある(変換ビューの引数がより速い)ようにするには、取得する内容がわからないので、常に背景を設定する必要があります。 – Matthieu

+0

しかし、各テキストボックスに異なる背景イメージを割り当てる場合はどうすればよいですか? – GAMA

0

あなたがsetbackgrounddrawable使用しているが、私はあなたがこれを可能にするビューの再利用の問題に見えるが、私はそれを見ていないので、私は確認することはできません画像

holder.txtFirst.setImageResource(R.drawable.Imagename); 
1

を設定するために、コードの下に使用しなければならないと思いますコードの一部。 getViewではビューを再利用していますか(つまり、convertViewパラメータを使用していますか)あなたがそうするなら、それはあなたの答えです。あなたはいつもあなたが望む色に背景を設定する必要があります。このような何か:

if (count % 2 == 0) { 
    ... 
    holder.txtFirst.setBackgroundDrawable(d); 
} else { 
    holder.txtFirst.setBackgroundDrawable(myDefaultRowColor); 
} 
関連する問題