Для начала я использовал учебный код Android Notepad.В моем notes_row.xml у меня есть текстовое представление для отображения заголовка заметки и флажок, который изначально скрыт андроидом: visibility = "ушел"
Я хочу, чтобы, когда пользователь открыл меню опций и нажал наОтметьте, флажки перед каждым элементом в списке должны стать видимыми.Однако, когда я нажимаю на Пометить в эмуляторе, флажок только первой заметки становится видимым.Итак, я хочу перебрать весь список и setVisibility (0), чтобы все флажки были видны.Я новичок, поэтому, пожалуйста, ответьте подробно.Заранее спасибо.
Мой фрагмент кода:
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()) {
case INSERT_ID:
createNote();
return true;
case MARK_ID:
// only first item check box appears with following 2 lines:
CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox1);
checkBox.setVisibility(0);
/* tried the following, but no chekbox appears with this:
Cursor c = mDbHelper.fetchAllNotes();
c.moveToPosition(0);
while(c.isAfterLast()){
CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox1);
checkBox.setVisibility(0);
c.moveToNext();
}
*/
return true;
}
Мой новый код после прочтения ответов, по-прежнему отображается только флажок первого элемента:
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()) {
case INSERT_ID:
createNote();
return true;
case MARK_ID:
CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox1);
String[] lvItems = new String[]{NotesDbAdapter.KEY_TITLE};
MyAdapter arrAdapter = new MyAdapter(this, android.R.layout.simple_list_item_multiple_choice, lvItems);
arrAdapter.toggleCheckBoxVisibility(checkBox);
arrAdapter.notifyDataSetChanged();
return true;
return super.onMenuItemSelected(featureId, item);
}
Вот мой адаптер:
private class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int textViewResourceId,
String[] objects) {
super(context, textViewResourceId, objects);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.notes_row, parent, false);
//String[] from = new String[]{NotesDbAdapter.KEY_TITLE};
return row;
//return super.getView(position, convertView, parent);
}
public boolean toggleCheckBoxVisibility(CheckBox checkBox){
checkBox.setVisibility(0);
super.notifyDataSetChanged();
return true;
}
}