2

背景色が違うものlistviewを使って習慣をつけています。adapter問題は、文字列(100以上の文字列)であるテキストがの色に設定されているColor.BLACKlistview、最初の2つの文字列は白で、残りは黒であるということです。

@Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
    View view = super.getView(position, convertView, parent);  
    TextView tv = (TextView) super.getView(position, convertView, parent);
    int colorPos = position % color.length; 
    tv.setTextColor(Color.BLACK);
    view.setBackgroundColor(color[colorPos]);  
    return view;  
}  

最初が白で、他が黒である理由の問題を検出できません。それは読み込みと何か関係がありますか?私のテキスト(文字列)は100を超えているからです。

アップデート

これはlistViewコードです:

MyAdapter adapter = new MyAdapter(this, 
    android.R.layout.simple_list_item_1,
    Strings.Advices);
setListAdapter(adapter);

そして文字列:

public class Strings {
    public static String Advices[] = {
       "advice",
       "advice",
       "adc",
       "add",
    };
}  
4

1 に答える 1

3

あなたの TextView は何もしません。通常findViewById()、行のレイアウトで TextView を見つけるために使用する必要があります。android.R.layout.simple_list_item_1TextView 自体を使用しているため、その手順をスキップできます。

@Override  
public View getView(int position, View convertView, ViewGroup parent) {  
    View view = super.getView(position, convertView, parent);  
    TextView tv = (TextView) view;
    int colorPos = position % color.length; 
    tv.setTextColor(Color.BLACK);
    view.setBackgroundColor(color[colorPos]);  
    return view;  
}  

しかし、getView()組み込みアダプターのメソッドは非常に一般的であるため、遅いです... アダプターのリサイクラーと ViewHolder の概念を最大限に活用するには、独自のアダプターを作成する必要があります。この Google Talk Turbo Charge Your UI (および/またはWorld of ListView ) を見て、効率的なアダプターを作成するのに役立ててください。

問題は、文字列 (100 以上の文字列) であるテキストが Color.BLACK の色に設定されていることですが、リストビューでは最初の文字列が白で、残りが黒です。

この変更は、ListView をスクロールしたときに発生すると想定しています。これは、View リサイクラーの動作に直接関係しています。

于 2012-12-24T21:35:28.560 に答える