У меня мало времени до неудачи, хотя я считаю, что решение моей проблемы не так уж сложно.У меня есть ListView
, который де-сериализует ArrayList
из SettingItems
.Каждая строка в этом представлении содержит два textview
s и один Checkbox
.Состояние флажка должно учитывать, будет ли этот элемент соблюдаться или нет.Код listView можно проверить на моем предыдущем вопросе:
. Определенные строки создаются в моем CustomSettingsAdapter, который расширяет BaseAdapter.Поэтому он содержит ArrayList для SettingItems.
private static ArrayList<SettingItem> settingsArrayList;
private LayoutInflater mInflater;
public CustomSettingsAdapter(Context context, ArrayList<SettingItem> sitems)
{
settingsArrayList = sitems;
mInflater = LayoutInflater.from(context);
}
public int getCount()
{
return settingsArrayList.size();
}
public Object getItem(int position)
{
return settingsArrayList.get(position);
}
public ArrayList<SettingItem> getItemList()
{
return settingsArrayList;
}
public long getItemId(int position)
{
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.settings_item, null);
holder = new ViewHolder();
holder.txtName = (TextView) convertView.findViewById(R.id.setting_name);
holder.details = (TextView) convertView.findViewById(R.id.setting_detail);
holder.cb = (CheckBox) convertView.findViewById(R.id.check);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.txtName.setText(settingsArrayList.get(position).getName());
holder.details.setText(settingsArrayList.get(position).getPath());
holder.cb.setChecked(settingsArrayList.get(position).getState());
holder.cb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
return convertView;
Я думал просто изменить ArrayList в адаптере и затем передать его в Activity, где он может быть сопоставлен с исходным списком, который впоследствии может нормально выполняться.быть сериализованным.Но я не заставляю его работать, с моими знаниями и вещами, которые я нашел в сети.Большое спасибо заранее за помощь мне!С наилучшими пожеланиями, Тоби
редактировать: onCheckedChangeListener:
holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
settingsArrayList.get(position).setState(isChecked);
notifyDataSetChanged();
}
});
пробовал также с cd.setID и получил фактическую позицию для ArrayList с cb.getID, но он возвращается с той же проблемой.