动态视图为动态添加的每个视图设置相同的值

时间:2018-01-22 09:30:24

标签: android

使用以下功能,我动态添加视图。但是通过这个,“addview”的最后调用值将在所有视图中设置。喜欢如果我在其0索引中调用带有“aaaa”的addview函数,它将添加一个带有aaaa名称的视图,然后我再次在其0索引中调用带有“bbbb”的addview,它将添加一个视图,但这次设置为“bbbb” “以前的观点也是如此。现在,两个动态添加的视图都在其edittext中具有“bbbb”值。请帮忙。

public void addView(String[] values) {
        layoutInflater =
                (LayoutInflater) getActivity( ).getBaseContext( ).getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View convertView = layoutInflater.inflate(R.layout.lay_fcp_child, null);

        ImageView ivRemove;
        EditText etName;
        RelativeLayout layDOB;
        final TextView tvDate;
        final Spinner spRelationship;

        tvDate = (TextView) convertView.findViewById(R.id.tv_ins_dob);
        layDOB = (RelativeLayout) convertView.findViewById(R.id.lay_ins_dob);
        etName = (EditText) convertView.findViewById(R.id.et_ins_personname);
        etName.setFilters(new InputFilter[]{filterName, new InputFilter.LengthFilter(60)});
        ivRemove = (ImageView) convertView.findViewById(R.id.iv_fcp_remove);
        spRelationship = (Spinner) convertView.findViewById(R.id.sp_fcp_relationship);

        AdapterIDValue adapterRelations = new AdapterIDValue(getActivity(), R.layout.spinner_selected_item_relation, alSRelationship);
        spRelationship.setAdapter(new NothingSelectedSpinnerAdapter(adapterRelations, R.layout.spinner_hint_relationship, getActivity()));

        etName.setText(values[0]);
        spRelationship.setSelection(Integer.parseInt(values[3]));
        tvDate.setText(values[1]);
        tvDate.setTag(values[2]);
        tvDate.setTextColor(Color.BLACK);
        try {
            layDynamic.addView(convertView);
        }catch (Exception sdf){
            System.err.print(sdf);
        }
        svMain.fullScroll(ScrollView.FOCUS_DOWN);
    }

2 个答案:

答案 0 :(得分:0)

是的,您可以使用RecyclerViewListView创建,或者如果您想使用滚动视图生成每个视图的动态ID,那么您可以解决您的问题。

答案 1 :(得分:0)

每次调用addview(...)方法都会创建一个新适配器并将其设置为spRelationship。这个新的适配器取代了以前的。您不是“添加视图”,而是“设置视图”。

您只需将适配器设置一次并更改其数据。