Я хочу знать, как они это делают, чтобы показать флажок, используют ли они 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()
на свой адаптер.
Конечно, вы можете использовать два макета, один из которых содержит CheckBox
и тот, у которого его нет. Но, как правило, вы бы использовали два макета в ListView
, когда два макета очень (или существенны) разные (что не относится к вашему случаю). Чтобы реализовать два макета, вам нужно будет использовать методы 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()
на адаптере.
какой-нибудь код пожалуйста .. так что мы узнаем, что вы используете ... –
Я выложу код позже, им не на ПК ... В любом случае im использует список с адаптером ... – Rothariger