Android сохранить проверено проверка текста - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть просмотр списка с проверенным видом текста в каждом представлении, все мои элементы обрабатываются через базу данных, все работает, но я не могу сохранить проверенное состояние элементов списка, у меня есть набор для рисования для каждого клика, но Не знаю, как сохранить его, если я начну другое занятие. Ответ с кодом был бы высоко оценен, спасибо ПОЖАЛУЙСТА, ПОМОГИТЕ!

    listview.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View v, int position,
                long id) {
            // TODO Auto-generated method stub
            CheckedTextView tt = (CheckedTextView) v
                    .findViewById(R.id.checkedview1);
                    if (!tt.isChecked()) {
                    tt.setChecked(true);

                    tt.setCheckMarkDrawable(R.drawable.checkedbox);
                    } else {
                    tt.setChecked(false);
                    tt.setCheckMarkDrawable(R.drawable.nullbox);
                    }
        }

    });

Вот xml для моего списка и моего проверенного текста

<CheckedTextView 
  xmlns:android="http://schemas.android.com/apk/res/android"      
  android:id="@+id/checkedview1" 
  android:paddingLeft="20dip" 
  android:paddingRight="20dip" 
  android:paddingTop="10dip"
  android:paddingBottom="10dip" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="?android:attr/listPreferredItemHeight"  
  android:gravity="center_vertical"  
  android:checkMark="@drawable/nullbox"
  android:textSize = "18sp"
  android:textColor="#000000"
  android:listSelector="#ef0000"

>

И мой список

<ListView
    android:id="@+id/list1"
    android:layout_width="match_parent"
    android:layout_height="404dp"
    android:cacheColorHint="#ffffff" />

это адаптер, который я использую для загрузки списка checklistDB.open (); c = checklistDB.getAllTasks ();

    for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
        String task = c.getString(1);
        adapter.add(task);
    }
    checklistDB.close();

1 Ответ

0 голосов
/ 23 февраля 2012
class CheckAdapter extends BaseAdapter {
    class NormalListHolder {
        ImageView check;
    }

    LayoutInflater layoutInflater;
    NormalListHolder normalListHolder;

    public CheckAdapter(Context context) {
        layoutInflater = LayoutInflater.from(context);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = layoutInflater.inflate(R.layout.list_item,
                    null);
            normalListHolder = new NormalListHolder();
            convertView.setTag(normalListHolder);
        } else {
            normalListHolder = (NormalListHolder) convertView.getTag();
        }

        normalListHolder.favoriteTag.setId(position);
        normalListHolder.favoriteTag
                .setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (favoriteStatus.get(v.getId())) { // favorite
                            favoriteStatus.set(v.getId(), false);
                            normalListHolder.favoriteTag.setImageSrc();
                        } else {
                            favoriteStatus.set(v.getId(), true);
                            normalListHolder.favoriteTag.setImageSrc();
                        }
                        notifyDataSetChanged();
                    }
                });
        return convertView;
    }

}

Я редактирую из своего кода, но я не уверен, что он работает (я редактирую его не очень осторожно), я объясню, что я делаю ниже:

1 создать ArrayList, который сохранил статус элемента (или когда вы прокручиваете просмотр списка, флажок будет сбит с толку)

ArrayList<Boolean> favoriteStatus = new ArrayList<Boolean>();

2 создайте новый Adpater и сделайте в нем держатель , держатель связывает представления в списке элементов.

3 setTag к списку держателем

4 при щелчке по нему, ищите статус в statusArray и устанавливайте правильный статус для представления, затем notifyDatasetChange (если это флажок, возможно, не нужен, потому что я здесь использую изображение), вы также можете сделать обновить базу данных или другие действия здесь

извините за мой английский пул, надеюсь, что он может помочь вам

...