Как дифференцировать счетчики в массиве - PullRequest
0 голосов
/ 08 мая 2019

Я хочу, чтобы пользователи планировали бег трусцой, используя набор блесен и флажки.Флажок для каждого дня недели и счетчиков, чтобы выбрать, когда они начинаются и заканчиваются в каждый день.

У меня есть настроенный фрагмент, который использует настраиваемый адаптер счетчика для отображения строк дней, а также флажок и два счетчика для выбора часов работы в день.Я пытаюсь закодировать кнопку, которая при нажатии возвращает время и дни, которые были выбраны.К сожалению, мой текущий массив не может различить счетчики.Вот фрагмент:

    public class TimeFragment extends Fragment {


    private static final String TAG = "TimeFragment";

    private Context context;
    private ListView lvDaysHours;

    private Button btnShowDayandTime;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_time, container, false);

        btnShowDayandTime = (Button)view.findViewById(R.id.lookup);
        lvDaysHours = view.findViewById(R.id.lvDays);

        //Filling an Array with Days
        ArrayList<String> mData = new ArrayList<>();
        mData.add("Sunday");
        mData.add("Monday");
        mData.add("Tuesday");
        mData.add("Wednesday");
        mData.add("Thursday");
        mData.add("Friday");
        mData.add("Saturday");

        //Filling an Array with Times
        ArrayList<String> mSpinnerItems = new ArrayList<>();
        mSpinnerItems.add("12:00 am");
        mSpinnerItems.add("01:00 am");
        mSpinnerItems.add("02:00 am");
        mSpinnerItems.add("03:00 am");
        mSpinnerItems.add("04:00 am");
        mSpinnerItems.add("05:00 am");
        mSpinnerItems.add("06:00 am");
        mSpinnerItems.add("07:00 am");
        mSpinnerItems.add("08:00 am");
        mSpinnerItems.add("09:00 am");
        mSpinnerItems.add("10:00 am");
        mSpinnerItems.add("11:00 am");
        mSpinnerItems.add("12:00 pm");
        mSpinnerItems.add("01:00 pm");
        mSpinnerItems.add("02:00 pm");
        mSpinnerItems.add("03:00 pm");
        mSpinnerItems.add("04:00 pm");
        mSpinnerItems.add("05:00 pm");
        mSpinnerItems.add("06:00 pm");
        mSpinnerItems.add("07:00 pm");
        mSpinnerItems.add("08:00 pm");
        mSpinnerItems.add("09:00 pm");
        mSpinnerItems.add("10:00 pm");
        mSpinnerItems.add("11:00 pm");
        //Initializing the spinners and checkboxes
        initItems();

        //adding a spinner adapter
        SpinnerAdapter adapter = new SpinnerAdapter(mData, mSpinnerItems, getContext());
        lvDaysHours.setAdapter(adapter);


        return view;
    }
    //Initializing the checkboxes
    private void initItems(){
       ArrayList items = new ArrayList<Item>();
        TypedArray arrayText = getResources().obtainTypedArray(R.array.restext);
        for(int i=0; i<arrayText.length(); i++){
            boolean b = false;
            Item item = new Item(b);
            items.add(item);
        }
        arrayText.recycle();
    }
    public class Item {
        boolean checked;
        Item(boolean b) {
            checked = b;
        }
    }

    //This is the spinner adapter
    public class SpinnerAdapter extends BaseAdapter {


        private ArrayList<String> mSpinnerItems;
        private ArrayList<String> mData;
        private Context mContext;

        public SpinnerAdapter(ArrayList<String> data, ArrayList<String> spinnerItems, Context context) {
            mData = data;
            mContext = context;
            mSpinnerItems = spinnerItems;

        }

        @Override
        public int getCount() {
            return mData.size();
        }

        @Override
        public Object getItem(int position) {
            return mData.get(position);
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            View view = convertView;
            if (view == null) {
                LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                view = inflater.inflate(R.layout.layout_days_item, null);
            }

            CheckBox checkBox = (CheckBox) view.findViewById(R.id.rowCheckBox);
            TextView textView = (TextView) view.findViewById(R.id.rowTextView);
            Spinner spinner1 = (Spinner) view.findViewById(R.id.spnrTime1);
            Spinner spinner2 = (Spinner) view.findViewById(R.id.spnrTime2);

            textView.setText(mData.get(position));
            checkBox.setTag(position);
            checkBox.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.e(TAG, "onClick Switch: "+ position );
                }
            });
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item, mSpinnerItems);
            spinner1.setAdapter(adapter);
            spinner2.setAdapter(adapter);

            spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
                    String text1 = (String) parent.getItemAtPosition(pos);
                    String spnrid = mSpinnerItems.get(pos);
                    Log.e(TAG, "onSpinner1 click: " + text1+ " id: "+ spnrid);
                }
                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {
                }
            });
            return view;
        }
    }
    }

Вот код фрагмента_time.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Button
                android:id="@+id/lookup"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Show Chosen Days and Times"/>

            <TextView
                android:id="@+id/tv1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/lookup"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="40dp"
                android:text="You can schedule runs here"/>

            <TextView
                android:id="@+id/tv2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv1"
                android:layout_marginTop="40dp"
                android:text="Days"/>
        </RelativeLayout>
    </ScrollView>
    <ListView
        android:id="@+id/lvDays"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

Вот код layout_days_item.xml для каждого элемента строки:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <CheckBox
        android:id="@+id/rowCheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <TextView
        android:id="@+id/rowTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Spinner
        android:id="@+id/spnrTime1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toStartOf="@+id/ivRightArrow"
        android:layout_toLeftOf="@+id/ivRightArrow"/>
    <ImageView
        android:id="@+id/ivRightArrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_arrow_forward_gray_24dp"
        android:contentDescription="@string/arrow"
        android:layout_toStartOf="@+id/spnrTime2"
        android:layout_toLeftOf="@+id/spnrTime2"/>
    <Spinner
        android:id="@+id/spnrTime2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"/>
    </RelativeLayout>

Я не могу понять, как посмотреть, какое время выбрано для какого ряда.Как я могу дать каждому счетчику удостоверение личности?Можно ли их различить?

...