如何添加动态Spinner并删除它们?

时间:2012-07-08 21:33:55

标签: android dynamic android-spinner reminders

我的问题围绕着提醒Spinner。我试图让用户最多添加5个提醒。但我也不想展示所有五个。这些提醒都是Spinner个,有多种选择。当用户点击添加提醒时,它会这样做。当他们想要拿走一个时,他们也可以这样做,当他们想要添加另一个时,新的一个出现在底部。知道如何解决这个问题吗?

我原来的实现是已经定义了5个(4个“已经消失”),但是如果用户想要添加一个,它就会变得“可见”。问题在于,如果你通过让它“消失”从视图中取出一个提醒,然后将其添加回来,它就不会在底部,而是返回原来的位置(除非它已经是最后一个微调器) 。现在我迷失了如何在某些视图下专门动态添加微调器。任何想法将不胜感激!

编辑:我到目前为止/ RemindersAdapter.java


public class RemindersAdapter extends BaseAdapter{
ArrayList<Spinner> shownReminders;

public RemindersAdapter(Context c) {
    shownReminders.add(new Spinner(c));
    shownReminders.add(new Spinner(c));
    shownReminders.add(new Spinner(c));
    shownReminders.add(new Spinner(c));
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return shownReminders.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return shownReminders.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public View getView(int position, View view, ViewGroup parent) {
    if(view == null) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        view = inflater.inflate(R.layout.reminder_spinner, parent, false);
    }
    Log.d("TAG", "This is trying to run");
    Spinner reminderSpinner = (Spinner)view.findViewById(R.id.duplicate_reminder);
    reminderSpinner.setTag("1"); //this tag will be used to check which it is and correctly put the reminder into its respective String
    ArrayAdapter<CharSequence> reminderAdapter = ArrayAdapter.createFromResource(
            parent.getContext(), R.array.reminders_array, android.R.layout.simple_spinner_item);
    reminderAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    reminderSpinner.setAdapter(reminderAdapter);
    reminderSpinner.setOnItemSelectedListener(new MyOnReminderSelectedListener());
    shownReminders.add(position, reminderSpinner);


    return view;
}


/*
 * Listener for when the reminder spinner gets a value the user entered
 * */
public class MyOnReminderSelectedListener implements OnItemSelectedListener{

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos,
            long id) {
        //does nothing for now

    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // Do nothing for now   
    }   
}//end of MyOnReminderSelectedListener innerclass

1 个答案:

答案 0 :(得分:0)

微调器中数据外观的顺序取决于您输入适配器的数据顺序。如果要更改显示的顺序,则需要更改支持适配器的数据中的顺序(并使用notifyDataSetChanged()使微调器重新绘制)。

如果没有看到代码,就很难知道如何告诉你继续前进。