如何将值从anadapter类传递给activity

时间:2012-04-03 13:46:07

标签: android

我想将list(itemvalue)的值从适配器类传递给activity。因为我正在扩展arrayadapter类而不是Activity,所以我不能使用sharedpreference。我将这些值带入arraylist(itemname在听众里面。这是我试过的代码。任何人都可以帮我解决这个问题....

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;
    }
}

3 个答案:

答案 0 :(得分:0)

在您的活动中,您正在创建CustomArrayAdapter。例如

myAdapter = new CustomArrayAdapter();

然后在活动中覆盖setOnListItemClick()

答案 1 :(得分:0)

请尝试以下步骤:

  1. 创建界面
  2. 在调用构造函数类
  3. 时将接口与适配器绑定
  4. 在活动中实施界面
  5. 通过接口方法将数据传递给适配器中某些视图事件的活动。

答案 2 :(得分:0)

创建一个类似

的界面
public interface OnTaskDone{
    void onTaskComplete(Model model);
}

添加类似

的方法
public void setOnTaskDone(OnTaskDone onTaskDone){
    this.onTaskDone = onTaskDone;
}

并在检查时更改

@Override
public void onCheckedChanged(CompoundButton buttonView,
                            boolean isChecked) {
            Model element = (Model) viewHolder.mCheckbox
                                .getTag();  
            onTaskDone.onTaskDone(element);
            element.setSelected(buttonView.isChecked());
            **itemname.add(element.getName());*

 }