0

私の質問はリマインダーを中心に展開していSpinnerます。ユーザーが最大 5 つのリマインダーを追加できるようにしようとしています。しかし、5つすべてを表示したくもありません。これらのリマインダーは、Spinner複数の選択肢を持つそれぞれの です。ユーザーがクリックしてリマインダーを追加すると、追加されます。1 つ削除したい場合は削除することもでき、別の 1 つを追加したい場合は、新しい 1 つが下に表示されます。これについてどうすればよいか考えていますか?

私の最初の実装では、5 つが既に定義されていました (4 つの「なくなった」) が、ユーザーが 1 つ追加したい場合は「表示」されます。それに関する問題は、リマインダーをビューから「削除」して削除し、再度追加すると、下部に表示されず、元の場所に戻ることです (すでに最後のスピナーでない限り)。 . 今、特定のビューの下で特にスピナーを動的に追加する方法について迷っています。どんなアイデアでも大歓迎です!

編集:これまでのところ/ 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
4

1 に答える 1

0

スピナーに表示されるデータの順序は、アダプターにフィードするデータの順序に基づきます。ディスプレイの順序を変更したい場合は、アダプターを裏打ちするデータの順序を変更する必要があります (notifyDataSetChanged()スピナーを再描画するために使用します)。

コードを見ないと、先に進むように指示する方法を知るのは困難です。

于 2012-07-08T22:08:19.447 に答える