如何将类ArrayList从扩展arryadapter传递到活动

问题描述:

我正在创建自定义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); 

首先要空构造为您的活动。像

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中的活动的方法(将转储列表分为数据库)。

谢谢...