如何将listview项从一个活动添加到android中另一个活动的listview?

时间:2017-07-10 07:05:24

标签: android listview android-adapter

我有一个包含listview的Mainactivity,还有另一个名为" WhiteList"这也包含listview,我想将listview项目从MainActivity添加到另一个活动的Listview项目。请帮我做那个

适配器代码: -

    private LayoutInflater layoutInflater;
    private List<AppList> listStorage;
    private Context mContext;
    int newarr_pos=0;
    public AppAdapter(Context context, List<AppList> customizedListView) {
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        listStorage = customizedListView;
        this.mContext = context;
    }

    @Override
    public int getCount() {
        return listStorage.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        final ViewHolder listViewHolder;
        if (convertView == null) {
            listViewHolder = new ViewHolder();
            convertView = layoutInflater.inflate(R.layout.installed_app_list, parent, false);

            listViewHolder.textInListView = (TextView) convertView.findViewById(R.id.list_app_name);
            listViewHolder.imageInListView = (ImageView) convertView.findViewById(R.id.app_icon);
            listViewHolder.switchCompat = (SwitchCompat) convertView.findViewById(R.id.toggleButton);
            convertView.setTag(listViewHolder);
        } else {
            listViewHolder = (ViewHolder) convertView.getTag();
        }
        listViewHolder.textInListView.setText(listStorage.get(position).getName());
        listViewHolder.imageInListView.setImageDrawable(listStorage.get(position).getIcon());
        listViewHolder.switchCompat.setTag(position);

        listViewHolder.switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    new AlertDialog.Builder(mContext,R.style.AppCompatAlertDialogStyle).setTitle("Warning").setMessage("You want to whiteList this application?").setPositiveButton("YES", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            //here i am adding items to another arraylist
                            List<WhiteListModel> res = new ArrayList<WhiteListModel>();
                            String name = listStorage.get(position).getName();
                            Drawable icon = listStorage.get(position).getIcon();
                            String packageName = listStorage.get(position).getPackName();
                            res.add(new WhiteListModel(name,icon,packageName));


                            listStorage.remove(position);
                            notifyDataSetChanged();


                            listViewHolder.switchCompat.setChecked(false);
                        }
                    }).setNegativeButton("No", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            listViewHolder.switchCompat.setChecked(false);
                        }
                    }).show();

                }


            }
        });
        return convertView;
    }
    static class ViewHolder {
        SwitchCompat switchCompat;
        TextView textInListView;
        ImageView imageInListView;
    }
}

1 个答案:

答案 0 :(得分:0)

假设您在两个活动中都需要相同的列表,在启动另一个活动时,您可以将列表传递给该活动,如下所示:

intent.putExtra("LIST", myList);

然后检索列表:

ArrayList<TypeOfList> myList = (ArrayList<TypeOfList>) getIntent().getSerializableExtra("LIST");

最后将列表设置为listview:

yourAdapter.setList(myList);
listView.setAdapter(yourAdapter);