2017-02-16 3 views
0

検索されたjsonからListviewが入力されたアダプタがあります。 ポジションに依存する特定のセルの色、つまりポジション1の青いポジション2の赤などを変更したいと思います。しかし、現在のコードを使用して、目的の効果が得られます。私はこれはビューが爽快だが、それを修正する方法がわからないためだと理解しています。Androidリストビューアの証明書ポジションの色が変更されています

public class ListAdapter extends BaseAdapter { 

MainActivity main; 

ListAdapter(MainActivity main) { 
this.main = main; 
} 

@Override 
public int getCount() { 
return main.countries.size(); 
} 

@Override 
public Object getItem(int position) { 
return null; 
} 

@Override 
public long getItemId(int position) { 
return 0; 
} 

static class ViewHolderItem { 
TextView name; 
TextView code; 
TextView pts; 

} 

@Override 
public View getView(int position, View convertView, ViewGroup parent){ 
ViewHolderItem holder = new ViewHolderItem(); 
if (convertView == null) { 
LayoutInflater inflater = (LayoutInflater) main.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.cell, null); 

     holder.name = (TextView) convertView.findViewById(R.id.name); 
     holder.code = (TextView) convertView.findViewById(R.id.code); 
     holder.pts = (TextView) convertView.findViewById(R.id.pts); 

     convertView.setTag(holder); 
} 
else { 
      holder = (ViewHolderItem) convertView.getTag(); 
} 

holder.name.setText(this.main.countries.get(position).name); 
holder.code.setText(this.main.countries.get(position).code); 
holder.pts.setText(this.main.countries.get(position).pts); 

if (position == 1) { 
holder.name.setBackgroundColor(Color.parseColor("#FFFFFF")); 

} 

return convertView; 

} 

} 
+0

のため、ご希望の色で、他の条件を提供しますテキストビューの背景 – pkgrover

+0

ありがとう、iveはそれを試みましたが、それでもリスト全体で繰り返されます。 –

+1

リストのサイズで色のリストを作成し、colorListから希望の色をその位置で取得することができます – Roish

答えて

0

リスト内のビューはリサイクルされています。スクリードは、画面にスクロール項目に再利用され、このようなコードを使用し

if (position == 1) { 
    holder.name.setBackgroundColor(Color.parseColor("#FFFFFF")); 
} else { 
    holder.name.setBackgroundColor(...) 
} 

それとも、2つだけのアイテムの色でリストを分割したい場合:。。

if(position % 2 == 0) view.setBackgroundColor(Color.rgb(224, 224, 235)); 
if(position % 2 == 1) view.setBackgroundColor(The normal color you should set); 
0

私が正しく理解している場合 - あなたはこの色を見る繰り返しだけでなく、位置1 にあなたがgetViewメソッドに与えられていますconvertViewを再使用していて、それはあなたがすでに作成されますことを意味するので発生する可能性がありますし、すでに使用されている背景色を持ち、古いプロパティを持つViewを使用し、新しいプロパティとデータを与えます。 その場合、古い色になっている可能性があります。また、それぞれの位置に色を付けないため、色が付いています。

私はこのケースで考える -

switch(position){ 
    case 1: 
      holder.name.setBackgroundColor(Color.parseColor("#FFFFFF")); 
      break; 
    case 2: 
      holder.name.setBackgroundColor(Color.parseColor("#EEEEEE")); 
      break; 
    case 3: 
      holder.name.setBackgroundColor(Color.parseColor("#000000")); 
      break; 
    case 4: 
      holder.name.setBackgroundColor(Color.parseColor("#DDDDDD")); 
      break; 
    case default: 
      holder.name.setBackgroundColor(Color.parseColor("#ABCDEF")); 
      break; 
} 

リサイクルカラーの問題を解決します。 (スイッチの選択スコープに好きなだけ色を追加するか、上記のようにカラー配列を作成し、位置に合わせて変更してください)

関連する問題