2012-02-23 3 views
0

各ビューでcheckedtextviewのリストビューがあり、すべてのアイテムがデータベースを介して操作されていますが、すべて動作しますが、リストアイテムのチェック状態を保存できません。私は別のアクティビティを開始した場合、私はそれを保存する方法を知っていない、コードでの回答は、高く評価されるだろう お願いします!ここでandroid save checktextview check

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

<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.getAllTask​​s();

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

答えて

0
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項目の状態を保存した(または、リストビューをスクロールすると、チェックボックスが混乱します)、ホルダーはlistiにビューをバインドします一緒にtem。ホルダー

4によってのListItemに

3 setTagそれはチェックボックスであれば、多分必要はありません(notifyDatasetChange、その後、それをクリックしstatusArrayにステータスを見て、ビューに適切な状態に置くとき私はここで画像ビューを使用しているため)また、データベースや他のアクションを更新することができます

ごめんなさい私のプールの英語、あなたが助けることを願って