2011-02-07 8 views
0

私はリストビューをカスタマイズしました。テキストと背景画像を(条件ごとに)使用しています。 今、私は、テキストビューの背景が他のテキストビューと重なっているリストビューをスクロールする際に問題に直面しています。ここ はサンプルコードです:膨らんだリストビューのトラブル

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

View icontextlayout=convertView; 
    icontextlayout= inflater.inflate(R.layout.layout_complex_list, null); 
    TextView Txt1=(TextView)icontextlayout.findViewById(R.id.txt1); 
if(disp1==true) 
{ 
Txt1.setBackgroundResource(R.drawable.pic) 
} 
    else 
Txt1.setText("Text1 "+strUser);// 

    TextView Txt2=(TextView)icontextlayout.findViewById(R.id.txt2); 
if(disp2==true) 
{ 
Txt2.setBackgroundResource(R.drawable.pic); 
} 
    else Txt2.setText("Text2: "+strIndus); 
return icontextlayout;  

}

あなたが背景画像PICは、他の人の背景を重複しないように私を助けてもらえます。よろしくお願い

...

答えて

1

問題は、あなたが背景を必要としないときは、デフォルトの背景を設定しなければならないということです。例えば:

  • 通常、移入されたリストに道彼らはありません:あなたは気にしない場合

    if(disp1==true){ 
        Txt1.setBackgroundResource(R.drawable.pic); 
        Txt1.setText(""); 
    } 
    else{ 
        Txt1.setText("Text1 "+strUser);// 
        Txt1.setBackgroundDrawable(null); 
    } 
    

    はまた、私はあなたのコードについての私の意見を与えたいです。この回答を見てみましょう:How to load the Listview "smoothly" in android

  • convertViewは、行の再利用に使用されます。
  • あなたが実際にこのように、それは新しい行を作成します(あなたが inflater.inflateを呼び出すとき) convertViewを使用していないので、悪いです

View icontextlayout=convertView; 
icontextlayout= inflater.inflate(R.layout.layout_complex_list, null); 

:あなたのケースでは、あなたのような何かをやっていますあなたのリストは本当に遅くなります。

  • if(disp2==true)は冗長です。ちょうど:if(disp2)の使用を検討する必要があります。
+0

あなたは本当に私の注意を勝ち取る。ありがとうクリスチャン。 – Pankaj

+0

本当にありがとうございます。私は理解しています。コードは、値の種類がわかりやすいだけです。とにかく助けてくれました。 – Pankaj