Я создаю концепцию в Android, которая покажет рабочее время сотрудника пользователю этого приложения (один из сотрудников).Во-первых, я отправляю две даты в файл php
для извлечения данных между этими двумя датами, которые являются временем начала и окончания рабочих часов.
И эта концепция отлично работает в файле php
, я могуполучить данные.
Но когда я пытаюсь отобразить, у меня возникают три проблемы.
первая дата - 9-12-2018
последняя дата - 14-12-18
- В определенную дату (9-12-2018 - первая дата) время начала и время окончания отсутствуют, файл
php
отправляет null
для этой даты, но следующая дата для последнегоДата имеет значение (с 10-12-2018 по 14-12-18 (последняя дата)).
Используя концепцию подсчета, я отображаю рабочее время сотрудника.Я отправляю счетчик 0 для отображения даты первой даты, но это null
, поэтому он ничего не отображает, для этого я пытаюсь использовать часть if else
в цикле for
, когда выполняется часть else
,приложение ломается.
- Когда каждая дата имеет значение, концепция работает, но имя индекса отображается для каждой строки.(Я прикрепил скриншот вывода).
, а также при нажатии следующей кнопки должны быть удалены данные за 9-12-2018 и отображены данные от 10-12-2018,но он отображается на той же странице.
Я использовал
stk.removeView(tbrow);
stk.removeView(tbrow0);
, чтобы удалить предыдущие данные, но когда я использую это в начале функции init
, предыдущийстрока удаляется каждый раз, когда вызывается функция, и показывает только один рабочий час сотрудника.
Это мой файл активности:
package com.example.myapplication;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
public class Colleagues_Schedule extends AppCompatActivity {
int i;
String result1;
int size = 20;
Context context;
int Count = 0;
int datecount = 1;
Integer Nmaxclicks = 3;
Integer Ncurrentnumber = 0;
Integer Pmaxclicks = 4;
Integer Pcurrentnumber = 0;
Button Next, Previous;
JSONArray jsonArray_New = null;
String[] ScheduleDates, StartTimes, Endtimes, Names;
String ScheduleDate, StartTime, Endtime, Today, Tomarrow, Name;
TextView dat;
private ArrayList < String > ScheduleDateArray = new ArrayList < > ();
private ArrayList < String > StartTimeArray = new ArrayList < > ();
private ArrayList < String > EndtimeArray = new ArrayList < > ();
private ArrayList < String > NameArray = new ArrayList < > ();
TableRow tbrow0, tbrow;
DateFormat TW;
TableLayout stk;
Typeface boldTypeface = Typeface.defaultFromStyle(Typeface.BOLD);
GridLayout mainGrid2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_colleagues__schedule);
Next = (Button) findViewById(R.id.next);
Previous = (Button) findViewById(R.id.back);
DateFormat TO = new SimpleDateFormat("yyyy-MM-dd");
Today = TO.format(Calendar.getInstance().getTime());
TW = new SimpleDateFormat("yyyy-MM-dd");
result1 = getIntent().getStringExtra("Colleagues_Schedule");
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Ncurrentnumber == Nmaxclicks) {
Next.setEnabled(false);
} else {
stk.removeView(tbrow);
stk.removeView(tbrow0);
Count++;
dateloop(Count);
Ncurrentnumber = Ncurrentnumber + 1;
}
}
});
Previous.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Pcurrentnumber == Pmaxclicks) {
Previous.setEnabled(false);
} else {
stk.removeView(tbrow);
stk.removeView(tbrow0);
Count--;
dateloop(Count);
Pcurrentnumber = Pcurrentnumber + 1;
}
}
});
dateloop(Count);
}
private Date Tomarrow(int datecount) {
final Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, +datecount);
return cal.getTime();
}
private void dateloop(int count) {
switch (count) {
case 0:
Set_Schedule(Today);
break;
case 1:
datecount = 1;
Tomarrow(datecount);
Tomarrow = TW.format(Tomarrow(datecount));
Set_Schedule(Tomarrow);
break;
case 2:
datecount = 2;
Tomarrow(datecount);
Tomarrow = TW.format(Tomarrow(datecount));
Set_Schedule(Tomarrow);
break;
case 3:
datecount = 3;
Tomarrow(datecount);
Tomarrow = TW.format(Tomarrow(datecount));
Set_Schedule(Tomarrow);
break;
case -1:
datecount = -1;
Tomarrow(datecount);
Tomarrow = TW.format(Tomarrow(datecount));
Set_Schedule(Tomarrow);
break;
default:
Toast.makeText(Colleagues_Schedule.this, "UPDATE COMING SOON" + Tomarrow, Toast.LENGTH_LONG).show();
break;
}
}
public void Set_Schedule(String tomarrow) {
try {
JSONObject jsonObjects = new JSONObject(result1);
jsonArray_New = jsonObjects.getJSONArray("Colleagues_Schedule");
try {
for (int i = 0; i < jsonArray_New.length(); i++) {
JSONObject jsonObject = jsonArray_New.getJSONObject(i);
Name = jsonObject.getString("Name");
NameArray.add(Name);
ScheduleDate = jsonObject.getString("ScheduleDate");
ScheduleDateArray.add(ScheduleDate);
StartTime = jsonObject.getString("StartTime");
StartTimeArray.add(StartTime);
Endtime = jsonObject.getString("Endtime");
EndtimeArray.add(Endtime);
}
} catch (JSONException e) {
e.printStackTrace();
}
//Initilize the arraylist to array
Names = new String[NameArray.size()];
ScheduleDates = new String[ScheduleDateArray.size()];
StartTimes = new String[StartTimeArray.size()];
Endtimes = new String[EndtimeArray.size()];
for (int i = 0; i < ScheduleDateArray.size(); i++) {
ScheduleDates[i] = ScheduleDateArray.get(i);
if (tomarrow.equals(ScheduleDates[i])) {
// Toast.makeText(Colleagues_Schedule.this ,"ddda"+ ScheduleDates[i], Toast.LENGTH_LONG).show();
Names[i] = NameArray.get(i);
ScheduleDates[i] = ScheduleDateArray.get(i);
StartTimes[i] = StartTimeArray.get(i);
Endtimes[i] = EndtimeArray.get(i);
init(Names[i], ScheduleDates[i], StartTimes[i], Endtimes[i]);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@SuppressLint("ResourceType")
public void init(String name, String scheduleDate, String startTime, String endtime) {
/* if(stk!=null){
stk.removeView(tbrow);
stk.removeView(tbrow0);
}*/
tbrow0 = new TableRow(this);
stk = (TableLayout) findViewById(R.id.table_main);
tbrow0.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
TextView tv0 = new TextView(this);
tv0.setText("Name");
tv0.setTextColor(Color.WHITE);
tv0.setGravity(Gravity.CENTER | Gravity.BOTTOM);
tv0.setTypeface(boldTypeface);
tv0.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
tbrow0.addView(tv0);
TextView tv1 = new TextView(this);
tv1.setText("Date"); //name
tv1.setTextColor(Color.WHITE);
tv1.setGravity(Gravity.CENTER | Gravity.BOTTOM);
tv1.setTypeface(boldTypeface);
tv1.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
tbrow0.addView(tv1);
TextView tv2 = new TextView(this);
tv2.setText("Start Time");
tv2.setGravity(Gravity.CENTER | Gravity.BOTTOM);
tv2.setTextColor(Color.WHITE);
tv2.setTypeface(boldTypeface);
tv2.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
tbrow0.addView(tv2);
TextView tv3 = new TextView(this);
tv3.setText("End Time");
tv3.setGravity(Gravity.CENTER | Gravity.BOTTOM);
tv3.setTextColor(Color.WHITE);
tv3.setTypeface(boldTypeface);
tv3.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
tbrow0.addView(tv3);
//added layout params and weight
stk.addView(tbrow0, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
tbrow = new TableRow(this);
tbrow.setBackgroundResource(R.drawable.row_border);
//added layout params and weight
tbrow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
TextView t1v = new TextView(this);
TextView t2v = new TextView(this);
TextView t3v = new TextView(this);
TextView t4v = new TextView(this);
tbrow.setBackgroundResource(R.drawable.row_border);
t1v.setText(name);
t1v.setTextColor(Color.WHITE);
t1v.setGravity(Gravity.CENTER);
t1v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
tbrow.addView(t1v);
t2v.setText(scheduleDate);
t2v.setTextColor(Color.WHITE);
t2v.setGravity(Gravity.CENTER);
t2v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
tbrow.addView(t2v);
t3v.setText(startTime);
t3v.setTextColor(Color.WHITE);
t3v.setGravity(Gravity.CENTER);
t3v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
tbrow.addView(t3v);
t4v.setText(endtime);
t4v.setTextColor(Color.WHITE);
t4v.setGravity(Gravity.CENTER);
t4v.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1.0 f));
tbrow.addView(t4v);
stk.addView(tbrow, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
tbrow.setClickable(true); //allows you to select a specific row
tbrow.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
TableRow tablerow = (TableRow) view;
TextView sample = (TextView) tablerow.getChildAt(1);
String result = sample.getText().toString();
Toast toast = Toast.makeText(Colleagues_Schedule.this, result, Toast.LENGTH_LONG);
toast.show();
}
});
}
} //end of main
Вывод без нажатия следующей кнопки:
![output without clicking next button](https://i.stack.imgur.com/gdJhX.png)
При нажатии следующей кнопки:
![On clicking next button](https://i.stack.imgur.com/GGSy8.png)
Execute with stk.removeView(tbrow);stk.removeView(tbrow0);
:
![Execute with stk.removeView(tbrow);stk.removeView(tbrow0);](https://i.stack.imgur.com/Mwjin.png)
ЛюбойПожалуйста, помогите мне решить эти две проблемы.