使用循环从SharedPrefs添加视图

时间:2016-05-16 01:33:24

标签: java android

我有2个具有独立生命周期的片段,我想通过单击fragment2中的按钮将永久视图添加到fragment1中,我想出的最好方法是使用共享首选项。

片段1:

int i;

do {
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    ViewGroup.LayoutParams.MATCH_PARENT,
    ViewGroup.LayoutParams.WRAP_CONTENT);
    params.setMargins(0, i*10, 0, 0);
    Schedule_Class mClass = new Schedule_Class(getActivity(), "Math");
    Container.addView(mClass, params);

    } while (prefs.getString("mClass"+i++, null) != null);

fragment2:

int i;
    FinishButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            prefs.edit().putString("mClass" + i++, "dummyValue").apply();
        }
    });

正在发生的事情是,它只添加一个带有最新键值的视图,而前一个视图会被替换。

问题:

为什么这个循环不按预期工作?我如何使它工作?

3 个答案:

答案 0 :(得分:0)

当您在Fragment2中单击finishButton时,如何在Fragment1中触发代码?

一般来说,您可以使用一些事件框架,例如EventBus。

答案 1 :(得分:0)

你可以使用LISTVIEW的逻辑,你可以膨胀一段时间,第二次,你可以把其他设计放在BaseAdapter之上, 来自oficla网站的一些逻辑。

http://developer.android.com/intl/es/guide/topics/ui/layout/listview.html

来自互联网(谷歌)的其他例子

https://www.caveofprogramming.com/guest-posts/custom-listview-with-imageview-and-textview-in-android.html

答案 2 :(得分:0)

for loop是一种很好的方法

for (i = 1; prefs.getString("mClass"+i, null) != null; i++ ){

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    ViewGroup.LayoutParams.MATCH_PARENT,
    ViewGroup.LayoutParams.WRAP_CONTENT);
    params.setMargins(0, i*10, 0, 0);
    Schedule_Class mClass = new Schedule_Class(getActivity(), "Math");
    Container.addView(mClass, params);
}