2012-04-04 38 views
0

我正在創建自定義listview,其中我已提供了一個複選框。我創建了一個擴展適配器的自定義適配器類。我將這些複選框的值存儲在適配器類的數組中。 arraylist的名字是itemname(你可以在customadapter類的底部看到它)。我想將這個數組列表發送到一個活動中(爲了將這些值存儲到數據庫中)。由於我擴展了陣列適配器類,所以我不能使用sharedpreferences。可以解決這個問題嗎?我的適配器類如下。如何將類ArrayList從擴展arryadapter傳遞到活動

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

首先要空構造爲您的活動。像

public class MyActivity extends Activity{ 
    public MyActivity() 
     { 

     } 

然後用ArrayList參數在該活動中創建一個函數,該函數可以將ArrayList值轉儲到數據庫中。

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中的活動的方法(將轉儲列表分爲數據庫)。

謝謝...

相關問題