2012-04-04 5 views
0

私はチェックボックスを与えたカスタムlistviewを作成しています。私はアダプタを拡張するカスタムアダプタクラスを作成しました。これらのチェックボックスの値をアダプタクラスの配列に格納しています。 arraylistの名前はitemnameです(customadapterクラスの一番下に表示されます)。私はこのarraylistをアクティビティに送りたいと思っています(これらの値をデータベースに格納する目的で)。私は配列アダプタークラスを拡張しているので、sharedpreferencesは使用できません。この問題を解決できますか?私のアダプタクラスは以下の通りです。arryadapterをアクティビティに拡張するクラスからarraylistを渡す方法

public class CustomArrayAdapter extends ArrayAdapter<Model> { 

     protected static final String MODE_PRIVATE = null; 
     private final List<Model> list; 
     private final Activity context; 


     public CustomArrayAdapter(Activity context, List<Model> list) { 
      super(context, R.layout.customlistlayout, list); 
      this.context = context; 
      this.list = list; 
     } 

     static class ViewHolder { 
      protected TextView mText; 
      protected CheckBox mCheckbox; 

      public string getItemAtPosition(int i) { 
       // TODO Auto-generated method stub 
       return null; 
      } 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View view = null; 
      if (convertView == null) { 

       final ArrayList<String> itemname = new ArrayList<String>(); 
       LayoutInflater inflator = context.getLayoutInflater(); 
       view = inflator.inflate(R.layout.customlistlayout, null); 
       final ViewHolder viewHolder = new ViewHolder(); 
       viewHolder.mText = (TextView) view.findViewById(R.id.settings_label); 
       viewHolder.mCheckbox = (CheckBox) view.findViewById(R.id.check); 

       Activity activity = new SettingsActivity(); 
       viewHolder.mCheckbox.setOnCheckedChangeListener(activity); 
       viewHolder.mCheckbox 
         .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

          @Override 
          public void onCheckedChanged(CompoundButton buttonView, 
            boolean isChecked) { 
           Model element = (Model) viewHolder.mCheckbox 
             .getTag(); 

           element.setSelected(buttonView.isChecked()); 
           **itemname.add(element.getName());** 





          } 
         }); 
       for (String myValue : itemname) { 
        System.out.println(myValue); 
       } 
       view.setTag(viewHolder); 
       viewHolder.mCheckbox.setTag(list.get(position)); 
      } else { 
       view = convertView; 
       ((ViewHolder) view.getTag()).mCheckbox.setTag(list.get(position)); 
      } 
      ViewHolder holder = (ViewHolder) view.getTag(); 
      holder.mText.setText(list.get(position).getName()); 
      holder.mCheckbox.setChecked(list.get(position).isSelected()); 
      return view; 
     } 
    } 

は、私が最初にあなたの活動のための空のコンストラクタを作る活動

ArrayAdapter<Model> settingsadapter = new CustomArrayAdapter(this, getModel()); setListAdapter(settingsadapter); 

答えて

0

から以下のように、このアダプタクラスを呼び出しています。 like

public class MyActivity extends Activity{ 
    public MyActivity() 
     { 

     } 

このアクティビティでは、ArrayListの値をデータベースにダンプできるArrayList引数を使用して1つの関数を作成します。

public void save_to_database(ArrayList<String> itemname) 
{ 
// your code for save values in database... 
} 

アクティビティからこのコンストラクタを呼び出します。

settingsadapter = new settingsadapter(getBaseContext(), list, MyActivity.this); 

ここで、あなたのアクティビティのオブジェクトをアダプタで作成します。

public class CustomArrayAdapter extends ArrayAdapter<Model> { 

MyActivity mMyActivity; 

はその後今、あなたは、アダプタであなたの活動のすべてのメソッドのアクセス権を持っている

public CustomArrayAdapter(Activity context, List<Model> list, MyActivity mActivity) 
    { 
     this.mMyActivity = mActivity; 
    } 

のようなあなたの活動を持っているあなたのアダプタのコンストラクタを作成します。あなたはこれがお手伝いします

mMyActivity.save_to_database(Your ArrayList); 

希望のようにしたいとき、今すぐ(データベースにそのリストをダンプします)アクティビティのメソッドへのArrayListを渡します。

ありがとう...

関連する問題