动态numberpicker android不起作用

时间:2014-06-08 22:34:39

标签: android android-fragments android-viewpager numberpicker

我正在寻找动态实例化数字选择器。我想在numberpicker顺序中放置一个值(kitQty - YourQty)。

下一个代码现在正在运行,但仅适用于最后一个Id = 9。

因为这只与最后一条记录一起使用?

尝试使用setTag和setId,我无法更改所需的数字选择器。有人知道我的代码可能有什么问题吗?

非常感谢!

 public class MyKits extends Fragment {

private Button performAudit;
private Button submitOrder;
NumberPicker yourQty;
NumberPicker kitQty;
NumberPicker order;
Conexion basedatos;



@Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle         
 savedInstanceState) {

View v = inflater.inflate(R.layout.fragment_mykits, container, false);
Context context=v.getContext();

basedatos=new Conexion(v.getContext());


TextView tvModel = (TextView) v.findViewById(R.id.tvModel);
TableLayout table= (TableLayout) v.findViewById(R.id.Tabla);
tvModel.setText(getArguments().getString("model"));




for(int i=0;i<10;i++)
{
    TableRow tR = new TableRow(v.getContext());
    LinearLayout l1= new LinearLayout(v.getContext());
    LinearLayout l2= new LinearLayout(v.getContext());
    LinearLayout l3= new LinearLayout(v.getContext());
    LinearLayout l4= new LinearLayout(v.getContext());
    Button item = new Button(v.getContext());

    kitQty = new NumberPicker(getActivity().getApplicationContext());
    yourQty= new NumberPicker(getActivity().getApplicationContext());
    order= new NumberPicker(getActivity().getApplicationContext());

    item.setText("Prueba Imparjdsbfjbdsjfgbijsdfgijnsfdignsidfgh");



    l1.addView(kitQty);
    l2.addView(item);
    l3.addView(yourQty);
    l4.addView(order);

    ///Tamaño Texto
    item.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
    kitQty.setMaxValue(100);
    kitQty.setValue(50);
    kitQty.setMinValue(0);
    kitQty.setEnabled(false);
    order.setMinValue(0);
    order.setMaxValue(kitQty.getMaxValue());
    yourQty.setMaxValue(kitQty.getMaxValue());
    yourQty.setMinValue(0);
    yourQty.setTag(i);
    yourQty.setId(i);
    order.setTag(i);
    order.setId(i);
    kitQty.setTag(i);
    kitQty.setId(i);


   yourQty.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            Log.e("oldValue: " + oldVal + "   ID:     " + picker.getId(), "   newVal: " + newVal + "   ID: " + picker.getTag());

            kitQty.setId(picker.getId());
            yourQty.setId(picker.getId());
            order.setId(picker.getId());
            order.setValue(kitQty.getValue() - yourQty.getValue());


        }
    });

    order.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            Log.e("oldValue: " + oldVal + "   ID:     " + picker.getId(), "   newVal: " + newVal + "   ID: " + picker.getTag());

        kitQty.setTag(picker.getTag());
        yourQty.setTag(picker.getTag());
        order.setTag(picker.getTag());
        order.setValue(kitQty.getValue() - yourQty.getValue());

           // calcularQty(picker);
        }
    });


    tR.addView(l1);
    tR.addView(l2);
    tR.addView(l3);
    tR.addView(l4);
    table.addView(tR);


}


return v;}
public static MyKits newInstance(String model) {

MyKits f = new MyKits();
Bundle b = new Bundle();
b.putString("model", model);

f.setArguments(b);

 return f;} }

1 个答案:

答案 0 :(得分:1)

嗯,您的代码中有一些问题...... 但是,让我们首先关注的主要问题是先说你不应该自己分配id。我宁愿使用粒度xml布局文件对每个文件进行充气,或者如果您坚持使用“new”创建小部件,那么请单独保留ID,Android应该正确分配它们。

但实际上你的代码不起作用的主要原因是你使用你的计数器变量(i)在一个“for”循环中分配widget ID,并且你使用相同的值作为order widget,yourQty widget的id和kitQty小部件。您需要了解每个窗口小部件ID在同一视图层次结构中必须是唯一的。首先解决此问题。但我不会告诉你如何:你应该能够自己解决这个问题。