Pages

Membuat TextField di Dalam AlertDialog [Android]

Minggu, 18 Oktober 2015

Assalamualaiku Wr. Wb~

     Akhir-akhir ini aku lagi seneng sama pemrograman android. Nah pas nyoba bikin CRUD (Create Read Update Delete) di Android, aku melihat ada ketidakefektifan ketika membuat form penginputan. Aku berpikir daripada membuat activity baru kenapa ga bikin dialog yang muncul seperti JDialog di Java. Nah akhirnya aku cari cari ternyata bisa membuat TextField/EditText di dalam AlertDialog dan sekarang aku bagikan pada kalian!

Oke! Pertama kalian layoutnya dulu, copy kode ini ke dalam activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TextField-AlertDialog"
        android:id="@+id/button"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

Kemudian buat layout baru dan beri nama textfield.xml lalu copy kode ini ke dalamnya
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:layout_gravity="center_horizontal" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText2"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

Terakhir, copy kode ini ke dalam MainActivity.java
package koukousei.textfield_alertdialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btnAlert = (Button) findViewById(R.id.button);
        btnAlert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                final View layoutTextField = layoutInflater.inflate(R.layout.textfield, null, false);
                final EditText text1 = (EditText) layoutTextField.findViewById(R.id.editText);
                final EditText text2 = (EditText) layoutTextField.findViewById(R.id.editText2);
                try{
                    final AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
                    builder.setTitle("Masukkan Apa yang Kamu Mau")
                            .setView(layoutTextField)
                            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    Toast.makeText(getBaseContext(), text1.getText().toString() + "\n" +
                                            text2.getText().toString(), Toast.LENGTH_SHORT).show();
                                }
                            }).show();
                }catch (Exception e){
                    Toast.makeText(getBaseContext(), "Error! "+e, Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}


Selesai, silahkan coba di emulator kesayangan kalian atau langsung di run juga gapapa :v
sekian dari aku, semoga bermanfaat!

Wassalamualaikum Wr. Wb~

Form Login Android - PHP - MySQL

Sabtu, 17 Oktober 2015

Assalamualaikum Wr. Wb~

     Oke, sekarang kita bermain pemrograman android.


Kalo di sekolahan aku nama pelajarannya PEMROGRAMAN PERANGKAT BERGERAK, aneh ya? walaupun maksudnya bener, tapi agak lucu wkwk

     Kali ini aku mau kasih tutorial form login yang datanya ada di MySQL. Kenapa aku tulis PHP di judulnya, karna yang aku tau dari Android ga bisa langsung akses ke database MySQL. Jadi harus lewat perantara PHP buat pengambilan datanya.

Langsung aja! Pertama kalian buat databasenya kaya gini, Sekalian insert dulu bebas, user sama password yang kalian isi digunain buat login nantinya.


Kedua, kalian bikin file PHPnya dengan nama androidLogin.php dan copy kode ini
<?php
mysql_connect("localhost","root","") or die ("Koneksi Gagal!!");
mysql_select_db("ujikom");
$sql = "select * from admin where user = '$_POST[user]'";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
if(mysql_num_rows($query) == 0){
echo "Username Belum Terdaftar";
}elseif($_POST['user'] == "" or $_POST['pass'] == ""){
echo "Form Masih Kosong!";
}elseif($_POST['pass'] <> $row['password']){
echo "Password Salah!";
}elseif($_POST['pass'] == $row['password']){
echo "Berhasil Login!";
}
?>

Lanjut! Kemudian kalian copy kode ini ke activity_main.xml
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    android:paddingBottom="16dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/strUser"
        android:id="@+id/textView"
        android:layout_marginTop="10dp"
        android:layout_alignParentTop="true" />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextUsername"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/strPass"
        android:id="@+id/textView2"
        android:layout_below="@+id/editTextUsername"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextNama"
        android:layout_below="@+id/textView2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/strLogin"
        android:id="@+id/buttonLogin"
        android:layout_below="@+id/editTextNama"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

Terus bikin class baru namanya ClientToServer.java dan copy kode ini ke dalamnya
package koukousei.androidtugas_php_1;

import android.util.Log;


import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;

/**

 * Created by user on 02-Oct-15.
 */
public class ClientToServer {
    public static final int HTTP_TIMEOUT = 30 * 1000;
    private static HttpClient httpClient;
    private static HttpClient getHttpClient(){
        if(httpClient == null){
            httpClient = new DefaultHttpClient();
            final HttpParams parameterHttp = httpClient.getParams();
            HttpConnectionParams.setConnectionTimeout(parameterHttp, HTTP_TIMEOUT);
            HttpConnectionParams.setSoTimeout(parameterHttp, HTTP_TIMEOUT);
            ConnManagerParams.setTimeout(parameterHttp, HTTP_TIMEOUT);
        }
        return httpClient;
    }

    public static String executeHttpPost(String url, ArrayList<NameValuePair> postParameter) throws Exception{

        BufferedReader bufferedReader = null;
        try{
            HttpClient httpClient = getHttpClient();
            HttpPost httpPost = new HttpPost(url);
            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameter);
            httpPost.setEntity(formEntity);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
            StringBuffer stringBuffer = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while((line = bufferedReader.readLine()) != null){
                stringBuffer.append(line + NL);
            }
            bufferedReader.close();
            String hasil = stringBuffer.toString();
            return hasil;
        }finally {
            if(bufferedReader != null){
                try{
                    bufferedReader.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
}

Nah terakhir kalian buka MainActivity.java dan copy kode berikut
.package koukousei.androidtugas_php_1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import java.util.ArrayList;

import koukousei.phplogin.R;


public class MainActivity extends Activity implements View.OnClickListener {
    EditText etUser, etPass;
    Button btnLogin;
    String url = "http://10.0.2.2/PHP_Tugas_1/Android/androidLogin.php";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.form_login);
        StrictMode.enableDefaults();
        btnLogin = (Button) findViewById(R.id.buttonLogin);
        btnLogin.setOnClickListener(this);
        etUser = (EditText) findViewById(R.id.editTextUsername);
        etPass = (EditText) findViewById(R.id.editTextNama);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.buttonLogin:
                kirimData();
                break;
        }
    }

    private void kirimData(){
        ArrayList<NameValuePair> kirimPhp = new ArrayList<NameValuePair>();
        kirimPhp.add(new BasicNameValuePair("user", etUser.getText().toString()));
        kirimPhp.add(new BasicNameValuePair("pass", etPass.getText().toString()));
        String respon = null;
        try{
            respon = ClientToServer.executeHttpPost(url, kirimPhp);
            String res = respon.toString();
            res = res.trim();
            if(res.equals("Berhasil Login!")){
                Toast.makeText(this, res.toString(), Toast.LENGTH_SHORT).show();
                etUser.setText("");
                etPass.setText("");
                etUser.requestFocus();
            }else{
                Toast.makeText(this, res.toString(), Toast.LENGTH_SHORT).show();
                etUser.setText("");
                etPass.setText("");
                etUser.requestFocus();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

Jangan lupa ubah isi variable url, sesuaikan dengan directory file php kalian, ganti juga package packagenya sesuai dengan project kalian. Selesai, silahkan di run pake emulator kesayangan kalian!
Sekian dari aku, semoga bermanfaat! Terima Kasih~

Wassalamualaikum Wr. Wb~

Input Data dari JTable ke Database [Java]

Minggu, 04 Oktober 2015

 Assalamualaikum Wr.Wb.~

     Tiba-tiba keinget sama temen yang pernah nanya, gimana sih cara nyimpen data yang ada di table ke database? terus aku coba bantu dengan pengetahuan seadanya, ternyata bisa! Ini jadi kebanggaan sendiri buat aku yang masih newbie, karna yang nanya itu orang yang terkenal pinter, terlebih aku bantu dia tanpa nyari di google :3

     Oke lanjut ke tutorial, pertama bikin database namanya "db_table" dan table namanya "tb_table" dengan ketentuan seperti ini


Kemudian bikin formnya, sederhana aja ga usah bagus bagus dulu :v


     Aku anggap kaka kaka yang baca udah ngerti masalah Variable Name sama Koneksi ke database ya, jadi ngga aku bahas. Kita langsung menuju tombol proses yang berguna buat input data yang ada di JTextField ke JTable.

private void proses(){
        DefaultTableModel tableModel = (DefaultTableModel)jTable1.getModel();
        String[]data = new String[4];
        data[0] = txtBarang.getText();
        data[1] = txtJumlah.getText();
        data[2] = txtHarga.getText();
        data[3] = txtTanggal.getText();
        tableModel.addRow(data);
}

     Kode ini berfungsi untuk menginput data yang ada di JTextField ke JTable. Sekali lagi aku anggap masalah pemanggilan method kaka kaka di sini udah pada ngerti ya. Selanjutnya kita menuju tombol Simpan yang berguna untuk menginput data yang ada di JTable ke database yang sudah kita buat sebelumnya.

private void simpan(){
        int jumlah_baris = jTable1.getRowCount();
        if(jumlah_baris == 0){
            JOptionPane.showMessageDialog(rootPane, "Table Masih Kosong!");
        }else{
            try{
            int i=0;
            while(i < jumlah_baris){
                stat.executeUpdate("insert into tb_table (nama_barang, jumlah_barang, harga_barang, tanggal) values("
                        + "'"+jTable1.getValueAt(i, 0)+"',"
                        + "'"+jTable1.getValueAt(i, 1)+"',"
                        + "'"+jTable1.getValueAt(i, 2)+"',"
                        + "'"+jTable1.getValueAt(i, 3)+"')");
                i++;
            }
            JOptionPane.showMessageDialog(rootPane, "Berhasil Menyimpan!");
            }catch(Exception e){
            JOptionPane.showMessageDialog(rootPane, "Gagal Menyimpan! Error : "+e);
            }
        }
    }

     Fungsi dari kode ini yaitu mengulang proses penyimpanan dari JTable ke database dari baris awal hingga baris akhir dan baris yang disimpan disesuaikan dengan jumlah pengulangan yang terjadi. Kira-kira seperti itulah penjelasanya.

Sekian dari aku, semoga bermanfaat! Terima kasih~

Wassalamualaikum Wr. Wb.~