Я хочу, чтобы пользователи планировали бег трусцой, используя набор блесен и флажки.Флажок для каждого дня недели и счетчиков, чтобы выбрать, когда они начинаются и заканчиваются в каждый день.
У меня есть настроенный фрагмент, который использует настраиваемый адаптер счетчика для отображения строк дней, а также флажок и два счетчика для выбора часов работы в день.Я пытаюсь закодировать кнопку, которая при нажатии возвращает время и дни, которые были выбраны.К сожалению, мой текущий массив не может различить счетчики.Вот фрагмент:
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>
Я не могу понять, как посмотреть, какое время выбрано для какого ряда.Как я могу дать каждому счетчику удостоверение личности?Можно ли их различить?