このメソッドを ListAdapter に実装する必要があります。これは、ユーザーがリストをスクロールしたために行のビューが画面外から画面上に移動するたびに呼び出されます。getView メソッドに渡された View は、実際にはまったく別の行のデータを表示するために使用される場合があります。これは、オブジェクトがリサイクルされるためです。1,000 行のデータがあり、8 つのビューしか画面に収まらない場合、システムは行に対して 1,000 ではなく 8 つのビュー オブジェクトを作成します。
クラスが ListAdapter を実装している場合、次のように getView メソッドをオーバーライドできます。
public class MyClass implements ListAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
//Create a view for this row if none exists yet
if (rowView == null) {
LayoutInflater inflater = (LayoutInflater) _context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.YOUR_ROW_LAYOUT, parent, false);
//make the button go away if it should not be visible
if (buttonShouldBeNotVisible(convertView)) { //Your code should determine this
convertView.checkbox.setVisibility(View.INVISIBLE);
//Use View.GONE to make it take up no space
}
return convertView
} }