チェックボックスを表示する方法を知りたいのですが、2つのレイアウトを使用していますか?
2つのレイアウトファイルを使用しているとは思えません。行は非常に似ているため、表示を変更するだけでCheckBox
、のないレイアウトからあるレイアウトに簡単に切り替えることができます。CheckBox
これを行う方法は、行にの存在を示すフラグをアダプターに設定し、そのフラグに基づいて可視性をCheckBox
更新することです。CheckBox
boolean checkStatus = false;
//...
public void getView(int position, View convertView, ViewGroup parent) {
//...
if (checkStatus) {
checkBox.setVisibility(View.VISIBLE); //show the CheckBox for each row
} else {
checkBox.setVisibility(View.GONE); // hide the CheckBox for each row
}
//...
}
次に、それらを表示するときCheckBoxes
(Button
クリック、メニュークリックなど)、checkStatus
フラグを目的の値(現在の場合はそれ以外)true
に設定し、アダプターを呼び出す必要があります。CheckBoxes
false
notifyDataSetChanged()
もちろん、2つのレイアウトを使用できます。1つはを含み、もう1つは含まCheckBox
ないレイアウトです。ただし、一般的にListView
、2つのレイアウトが非常に(または実質的に)異なる場合は、2つのレイアウトを使用します(これはあなたの場合ではありません)。2つのレイアウトを実装するには、メソッドgetItemViewType
とを使用する必要がありgetViewTypeCount
ます。
boolean checkStatus = false;
public int getViewTypeCount() {
return 2; // you have two layouts
}
public int getItemViewType(int position) {
if (checkStatus) {
return 1;
} else {
return 0;
}
}
次に、あなたのgetView
方法で:
public void getView(int position, View convertView, ViewGroup parent) {
int which = getItemViewType(position)
// make a switch statement and inflate the correct layout file
// based on the which variable if the convertView is null
// do stuff;
}
もちろん、表示するときは、フラグを再度CheckBoxes
設定して、アダプターを呼び出す必要があります。checkStatus
notifyDataSetChanged()