2012-05-10 10 views
3

MyObjectのカスタム配列アダプタを使用してListViewを作成しました。 MyObjectの1つのインスタンスには、Stringbooleanが含まれています。 ListViewを視覚化すると、すべてのアイテムが太字で表示され、そのアイテムの1つをタップすると、新しいActivityが表示されます。何をしたいのですか?ListViewに戻って戻ってくるたびに、太字ではなくクリックしたアイテムが視覚化されます。実行時にListViewの行項目書体を変更する

@Override 
protected void onResume() { 
    super.onResume(); 
    adapter.notifyDataSetChanged(); 
} 

とコードが実際に動作しますが、問題がある:私は入れ

public class MyAdapter extends ArrayAdapter<MyObject> { 
private final Context context; 
private final ArrayList<MyObject> values; 

public MyAdapter(Context context, ArrayList<MyObject> values) { 
    super(context, R.layout.my_item, values); 
    this.context = context; 
    this.values = values; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if(convertView == null){ 
     convertView = inflater.inflate(R.layout.my_item, parent, false); 
    } 
    TextView textView = (TextView) convertView.findViewById(R.id.itemName); 
    textView.setText(values.get(position).getMyObjectName()); 
    if(values.get(position).isSetted()){ 
     textView.setTypeface(null, 0); 
    } 
    return convertView; 
} 

}私Activity

:これは私のカスタムArrayAdapterであるあなたには、いくつかの項目をタップした後、他のアンタップされたアイテムは、あなたが戻ったときに太字にならないようになります!これはランダムに起こります!なぜこうなった?アイテムの

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 

    String item = objList.get(position).getMyObjectName(); 
    objList.get(position).setSetted(true); 


    to_ans.putExtra("ItemName", item); 
    startActivity(to_ans); 

} 
boolean

値は、最初全てfalseに設定されています。

答えて

1

isSetted()falseは(convertViewは太字なしに設定することができるnull)でないときの場合のために(可能性がViewをリサイクルデフォルトのスタイルに戻す)である場合は、デフォルトに大胆スタイルを元に戻すことをお勧めします:

if(values.get(position).isSetted()){ 
    textView.setTypeface(null); 
} else { 
    textView.setTypeface(Typeface.BOLD); 
} 
+0

ありがとうございました!あなたは私を救った=) – michoprogrammer

関連する問題