i need help to solve this problem, i want a post data with multiple edittext..
here is my code...
package com.example.eis2;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Base64;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.example.eis2.Item.getNo_pengajuan_full;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import static com.example.eis2.Item.LoginItem.KEY_NIK;
import static com.example.eis2.izin.txt_nomor;
import static com.example.eis2.izinfull.txt_lokasi;
public class sakit extends AppCompatActivity {
private Spinner spinner;
ArrayList<String> Karyawan;
EditText nopengajuan, editText, keterangan;
Button pengajuan;
Button upload;
EditText tanggal1;
private List<getNo_pengajuan_full> no_pengajuan;
ProgressDialog pDialog;
final int CODE_GALLERY_REQUEST = 999;
ImageView upload_gambar;
Bitmap bitmap;
ImageButton add;
private Calendar date;
public int numberOfLines = 3;
private SimpleDateFormat dateFormatter;
public void showDateTimePicker(){
final Calendar currentDate = Calendar.getInstance();
Calendar twoDaysAgo = (Calendar) currentDate.clone();
twoDaysAgo.add(Calendar.DATE, -3);
date = currentDate.getInstance();
DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
date.set(year, monthOfYear, dayOfMonth );
editText.setText(dateFormatter.format(date.getTime()));
}
};
DatePickerDialog datePickerDialog = new DatePickerDialog(sakit.this, dateSetListener, currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setMinDate(twoDaysAgo.getTimeInMillis());
datePickerDialog.show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sakit);
Karyawan = new ArrayList<>();
spinner = (Spinner) findViewById(R.id.karyawan);
nopengajuan = (EditText) findViewById(R.id.nopengajuan);
editText = (EditText) findViewById(R.id.tanggal);
keterangan = (EditText) findViewById(R.id.keterangan_text);
upload_gambar = (ImageView) findViewById(R.id.gambar1);
no_pengajuan = new ArrayList<>();
pengajuan = (Button) findViewById(R.id.pengajuanfull);
dateFormatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
nopengajuan.setFocusable(false);
add = (ImageButton) findViewById(R.id.add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout ll = (LinearLayout)findViewById(R.id.container);
final TextView tanggald = new TextView(sakit.this);
tanggal1 = new EditText(sakit.this);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
tanggald.setLayoutParams(p);
tanggald.setId(numberOfLines + 1);
tanggald.setText("tanggal");
ll.addView(tanggald);
tanggal1.setLayoutParams(p);
tanggal1.setId(numberOfLines + 1);
ll.addView(tanggal1);
tanggal1.setFocusable(false);
numberOfLines++;
tanggal1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar currentDate = Calendar.getInstance();
Calendar twoDaysAgo = (Calendar) currentDate.clone();
twoDaysAgo.add(Calendar.DATE, -3);
date = currentDate.getInstance();
DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
date.set(year, monthOfYear, dayOfMonth );
tanggal1.setText(dateFormatter.format(date.getTime()));
}
};
DatePickerDialog datePickerDialog = new DatePickerDialog(sakit.this, dateSetListener, currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setMinDate(twoDaysAgo.getTimeInMillis());
datePickerDialog.show();
}
});
}
});
TextView tvResourceId = findViewById(R.id. tvResourceId ) ;
tvResourceId.setText(String. valueOf (upload_gambar)) ;
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDateTimePicker();
}
});
pengajuan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (editText.getText().toString().length() == 0) {
editText.setError("Masukkan Tanggal!");
} else if (keterangan.getText().toString().length() == 0) {
keterangan.setError("Masukkan Keterangan!");
} else if (upload_gambar.getDrawable() == null){
Toast.makeText(getApplicationContext(), "Upload gambar terlebih dahulu", Toast.LENGTH_SHORT).show();
} else {
postfull();
}
}
});
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String karyawan = spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();
Toast.makeText(getApplicationContext(), karyawan, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
getLokasi();
getNo();
upload = (Button) findViewById(R.id.upload);
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityCompat.requestPermissions(sakit.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, CODE_GALLERY_REQUEST);
}
});
}
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == CODE_GALLERY_REQUEST){
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "Select Image"), CODE_GALLERY_REQUEST);
}else{
Toast.makeText(getApplicationContext(), "You don't have permission to access gallery!", Toast.LENGTH_LONG).show();
}
return;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CODE_GALLERY_REQUEST && resultCode == RESULT_OK && data != null){
Uri path = data.getData();
try {
InputStream inputStream = getContentResolver().openInputStream(path);
bitmap = BitmapFactory.decodeStream(inputStream);
upload_gambar.setImageBitmap(bitmap);
upload_gambar.setVisibility(View.VISIBLE);
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(sakit.this, "o", Toast.LENGTH_SHORT).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
private void getLokasi() {
String lokasi = txt_lokasi.getText().toString().trim();
StringRequest stringRequest = new StringRequest(Request.Method.GET, "...", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
if (jsonObject.getString("status").equals("true")) {
JSONArray jsonArray = jsonObject.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
String karyawan = jsonObject1.getString("nama_karyawan_struktur");
String nik = jsonObject1.getString("nik_baru");
Karyawan.add(karyawan + " (" + nik + ") ");
}
}
spinner.setAdapter(new ArrayAdapter<String>(sakit.this, android.R.layout.simple_spinner_dropdown_item, Karyawan));
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void getNo() {
pDialog = new ProgressDialog(this);
showDialog();
pDialog.setContentView(R.layout.progress_dialog);
pDialog.getWindow().setBackgroundDrawableResource(
android.R.color.transparent
);
StringRequest stringRequest1 = new StringRequest(Request.Method.GET, "http://10.12.0.220/db_eis/izin_full_day.php",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject obj = new JSONObject(response);
JSONArray movieArray = obj.getJSONArray("data");
for (int i = 0; i < movieArray.length(); i++) {
JSONObject movieObject = movieArray.getJSONObject(i);
getNo_pengajuan_full nomor = new getNo_pengajuan_full(
movieObject.getInt("no_pengajuan_full_day"));
no_pengajuan.add(nomor);
}
getNo_pengajuan_full item = no_pengajuan.get(no_pengajuan.size() - 1);
nopengajuan.setText(String.valueOf(item.getNo_pengajuan_full() + 1));
hideDialog();
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), "Maaf, ada kesalahan", Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue1 = Volley.newRequestQueue(this);
requestQueue1.add(stringRequest1);
}
private void postfull(){
pDialog = new ProgressDialog(this);
showDialog();
pDialog.setContentView(R.layout.progress_dialog);
pDialog.getWindow().setBackgroundDrawableResource(
android.R.color.transparent
);
StringRequest stringRequest2 = new StringRequest(Request.Method.POST, "http://10.12.0.220/db_eis/izin_full_insert.php",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
hideDialog();
Toast.makeText(getApplicationContext(), "data sudah dimasukkan", Toast.LENGTH_LONG).show();
sakit.this.finish();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
hideDialog();
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String > params = new HashMap<String, String>();
String pengajuan = nopengajuan.getText().toString();
String nik_baru = getIntent().getStringExtra(KEY_NIK);
String tanggal = tanggal1.getText().toString();
String jabatan = txt_nomor.getText().toString();
String karyawan = spinner.getSelectedItem().toString();
String[] splited_text = karyawan.split(" \\(");
karyawan = splited_text[0];
String keterangan_sakit = keterangan.getText().toString();
String gambar = imagetoString(bitmap);
params.put("no_pengajuan_full_day", pengajuan);
params.put("nik_full_day", nik_baru);
params.put("jabatan_full_day", jabatan);
params.put("jenis_full_day","SA");
params.put("start_full_day", tanggal + 1);
params.put("karyawan_pengganti", karyawan);
params.put("ket_tambahan", keterangan_sakit);
params.put("status_full_day","0");
params.put("status_full_day_2","0");
params.put("upload_full_day", gambar);
return params;
}
};
RequestQueue requestQueue2 = Volley.newRequestQueue(this);
requestQueue2.add(stringRequest2);
}
private void showDialog() {
if (!pDialog.isShowing())
pDialog.show();
}
private void hideDialog() {
if (pDialog.isShowing())
pDialog.dismiss();
}
private String imagetoString(Bitmap bitmap)
{
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 20, byteArrayOutputStream);
byte[] imageType = byteArrayOutputStream.toByteArray();
return Base64.encodeToString(imageType, Base64.DEFAULT);
}
}
What I have tried:
add = (ImageButton) findViewById(R.id.add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout ll = (LinearLayout)findViewById(R.id.container);
final TextView tanggald = new TextView(sakit.this);
tanggal1 = new EditText(sakit.this);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
tanggald.setLayoutParams(p);
tanggald.setId(numberOfLines + 1);
tanggald.setText("tanggal");
ll.addView(tanggald);
tanggal1.setLayoutParams(p);
tanggal1.setId(numberOfLines + 1);
ll.addView(tanggal1);
tanggal1.setFocusable(false);
numberOfLines++;
tanggal1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar currentDate = Calendar.getInstance();
Calendar twoDaysAgo = (Calendar) currentDate.clone();
twoDaysAgo.add(Calendar.DATE, -3);
date = currentDate.getInstance();
DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
date.set(year, monthOfYear, dayOfMonth );
tanggal1.setText(dateFormatter.format(date.getTime()));
}
};
DatePickerDialog datePickerDialog = new DatePickerDialog(sakit.this, dateSetListener, currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setMinDate(twoDaysAgo.getTimeInMillis());
datePickerDialog.show();
}
});
}
});
this code is use for adding edittext with button
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String > params = new HashMap<String, String>();
String pengajuan = nopengajuan.getText().toString();
String nik_baru = getIntent().getStringExtra(KEY_NIK);
String tanggal = tanggal1.getText().toString();
String jabatan = txt_nomor.getText().toString();
String karyawan = spinner.getSelectedItem().toString();
String[] splited_text = karyawan.split(" \\(");
karyawan = splited_text[0];
String keterangan_sakit = keterangan.getText().toString();
String gambar = imagetoString(bitmap);
params.put("no_pengajuan_full_day", pengajuan);
params.put("nik_full_day", nik_baru);
params.put("jabatan_full_day", jabatan);
params.put("jenis_full_day","SA");
params.put("start_full_day", tanggal + 1);
params.put("karyawan_pengganti", karyawan);
params.put("ket_tambahan", keterangan_sakit);
params.put("status_full_day","0");
params.put("status_full_day_2","0");
params.put("upload_full_day", gambar);
return params;
}
this code is use for post..
example...
i just add a data with multiple edittext..
like this..
data :
a
tanggal1 :
2020-10-24
tanggal1 :
2020-10-25
tanggal1 :
2020-10-26
tanggal1 :
2020-10-27
data has a one edittext only
tanggal1 has multiple edittext
so..the output is
data |tanggal1
____________________________
a.............|2020-10-24
a.............|2020-10-25
a.............|2020-10-26
a.............|2020-10-27
in this case it just one post only
can you guys solve this problem.. i appreciate that