如何以片段形式传递已检查的图像

时间:2018-02-06 14:07:28

标签: java android listview fragment bundle

我有listView,还有复选框,imageView,TextView。我想传递那些在listView中检查过的图像。我知道这是在做捆绑,但如何做复选框部分?我有复选框,但我不知道如何初始化它。

这是适配器部分。

public class MyAdapter extends ArrayAdapter<MyAdapter> {

String names[];
int flags[];
Context mContext;


public MyAdapter(Context context, String[] languageNames, int[] countryFlags) {
    super(context, R.layout.listview_items);

    this.names = languageNames;
    this.flags = countryFlags;
    this.mContext = context;
}

@Override
public int getCount() {
    return names.length;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder mViewHolder = new ViewHolder();
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.listview_items, parent, false);
        mViewHolder.mFlag = convertView.findViewById(R.id.imageView);
        mViewHolder.mLanguage = convertView.findViewById(R.id.textView);
        convertView.setTag(mViewHolder);

    } else {
        mViewHolder = (ViewHolder) convertView.getTag();
    }
    mViewHolder.mFlag.setImageResource(flags[position]);
    mViewHolder.mLanguage.setText(names[position]);

    return convertView;
}

static class ViewHolder {
    ImageView mFlag;
    TextView mLanguage;
}}

你看到只有图像和文本视图。如何在那里添加复选框?

这是listView部分。

public class FragmentLanguage extends Fragment {

View mainView;
ListView listView;

Context mContext;

Button next;
MyAdapter adapter;
ArrayList<Integer> mItems = new ArrayList<>();

int[] images = {R.drawable.download,
        R.drawable.download,
        R.drawable.download,
        R.drawable.download,
        R.drawable.download,
        R.drawable.download,
        R.drawable.download,
        R.drawable.download};

String[] languages = {"Armenian", "Russian", "US English", "Portugal",
        "Spanish", "Georgian", "French", "Italian"};

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mainView = inflater.inflate(R.layout.listview, container, false);
    listView = mainView.findViewById(R.id.list_view);
    listView.setAdapter(adapter);

    adapter = new MyAdapter(getActivity(), languages, images);
    listView.setAdapter(adapter);

    next = mainView.findViewById(R.id.next);

    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

    return mainView;
}}

1)如何添加复选框部分? 2)如何将这个片段的图像发送到另一个带有bundle的片段?谢谢。我将在这里编写捆绑部分

next.setOnClickListener(new View.OnClickListener()

1 个答案:

答案 0 :(得分:0)

选项1:

列出Int val listOfSelectedImages = arrayListOf()

checkBox.setOnClickListener {

            if (checkBox.isChecked) {
                //when checked add image(example R.id.image1) to list
            } else {
                //remove from the list
            }

        }

从一个片段到另一个片段:

next.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      val mFragment2 = Fragment2()
      val bundle = Bundle()
      bundle.putParcelableArrayList(KEY, listOfSelectedImages)
      mFragment2.arguments = bundle
    supportFragmentManager.beginTransaction().add(R.id.fragment_container, mFragment2)
            .commit()
     }
  });
片段2中的

转到val list = getArguments.getParcelableArrayList(KEY)