如何在片段之间传递图像

时间:2018-02-06 08:24:05

标签: java android listview fragment bundle

我有一个listView,有复选框,图像,文本。我需要检查一下这个listView行,当我点击下一步时,我需要在下一个片段中看到已检查的图像。

我试过这里,但那不起作用。怎么了?

我需要将数据从FragmentLanguage传递到PersonalInfoFragment

public class FragmentLanguage extends Fragment {

View mainView;
ListView listView;
Button clear, next;
PersonalInfoFragment info = new PersonalInfoFragment();

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

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

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

    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for (int i = 0; i < images.length; i++) {
                Bundle bundle = new Bundle();

                if (listView.isItemChecked(i)) {
                    bundle.putInt("Images", images[i]);
                    info.setArguments(bundle);

                    getFragmentManager().beginTransaction().replace(R.id.container,
                            new PersonalInfoFragment()).addToBackStack(null).commit();
                }
            }
        }
    });
    return mainView;
}}

那是我必须检查元素并保存已检查图像的片段。

这是我需要传递已保存图像的类。

public class PersonalInfoFragment extends Fragment {

View mainView;

EditText skills_description;
Button clear, save, languages;

CircleImageView circleImageView1;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mainView = inflater.inflate(R.layout.personal_info, container, false);
    init(mainView);

    Bundle bundle = getArguments();
    if (bundle != null) {
        circleImageView1.setImageResource(bundle.getInt("Images"));
    }

    return mainView;
}

private void init(View v) {
    skills_description = v.findViewById(R.id.skills);
    clear = v.findViewById(R.id.clear);
    languages = v.findViewById(R.id.select_language);
    save = v.findViewById(R.id.save);

    circleImageView1 = v.findViewById(R.id.language1);

    clear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            skills_description.setText("");
        }
    });

    languages.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getFragmentManager().beginTransaction().replace(R.id.container,
                    new FragmentLanguage()).addToBackStack(null).commit();
        }
    });
}}

2 个答案:

答案 0 :(得分:0)

首先你必须为特定位置设置setItemChecked

var Profile = require('../models/profile');
Profile.create({user: user},{include: User})

现在您可以为该职位致电 list.setOnItemClickListener(object :AdapterView.OnItemClickListener{ override fun onItemClick(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) { list.setItemChecked(p2,true) } })

答案 1 :(得分:0)

您不应将不同的数组(语言和图像)传递给适配器。你需要 Domain / POJO Class ,它包含值和getter / setter方法。

class StudentInfo {
    private String Name;
    private int Image;
    private boolean isSelected;


    public boolean isSelected() {
        return isSelected;
    }

    public void setSelected(boolean selected) {
        isSelected = selected;
    }
    public StudentInfo(boolean isSelected) {
        this.isSelected = isSelected;
    }
    public void setIsSelected(boolean isSelected) {
        this.isSelected = isSelected;
    }
    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public int getImage() {
        return Image;
    }

    public void setImage(int Image) {
        this.Image = Image;
    }

    public StudentInfo(String name, int Image) {
        Name = name;

        this.Image = Image;
    }
}

您的解决方案就在这里。 请看一下Listview With Checkbox

请问是否有任何混淆。