Delicious Digg Facebook Favorites More Stumbleupon Twitter
Blog seputar hobby

Sunday, August 3, 2014

Posted by Unknown 12:35 AM
5 comments
Hallo netCitizen, apakabar?
Tulisan kali ini saya akan coba share mengenai aplikasi mobile android untuk men-sensus warga di setiap RT :). Ya benar, aplikasi ini dibuat untuk memudahkan RT dalam mengetahui data warganya dengan mudah dan disimpan dalam database SQLite di perangkat mobilenya.
Ok langsung mulai saja, seperti biasa buat project android baru di eclipse. Seperti contoh di bawah ini:






Selanjutnya adalah membuat DBAdapter yang difungsikan untuk berinteraksi dengan database, database yang digunakan adalah SQLite versi 3. Berikut adalah script pada file DBAdapter.java

package com.example.sensusrt;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DBAdapter {

private static final String DATABASE_PATH="/data/data/com.example.sensusrt/databases/";
private static final String DATABASE_NAME="db_sensus.sqlite3";
private static final int DATABASE_VERSION=3;
private static final String TABLE_PENDUDUK = "tbl_penduduk";
private static final String TABLE_PENDUDUK_noKTP = "noKTP";
private static final String TABLE_PENDUDUK_nama = "nama";
private static final String TABLE_PENDUDUK_jk = "jk";
private static final String TABLE_PENDUDUK_tempatLahir = "tempatLahir";
private static final String TABLE_PENDUDUK_tglLahir = "tanggalLahir";
private static final String TABLE_PENDUDUK_statusMenikah = "statusMenikah";
private static final String TABLE_PENDUDUK_noTelp = "noTelp";
private final Context context;
private DatabaseHelper dbHelper;
private SQLiteDatabase db; //private static final String tbl_create1 = "ALTER TABLE 'main'.'tbl_penduduk' RENAME TO '_tbl_penduduk_old_20140728';";
private static final String tbl_create = "CREATE TABLE 'tbl_penduduk' ('noKTP'  VARCHAR(40) NOT NULL,'nama'  VARCHAR(70) NOT NULL,'jk'  VARCHAR(1) NOT NULL,'tempatLahir'  VARCHAR(90) NOT NULL,'tanggalLahir'  DATE NOT NULL,'statusMenikah'  VARCHAR(1),'noTelp'  VARCHAR(15),'tglInput'  DATE DEFAULT (CURRENT_DATE),PRIMARY KEY ('noKTP' ASC));";
//public static final String KEY_NPM = "npm";
//public static final String KEY_NAMA = "nama";
//public static final String KEY_JURUSAN= "jurusan";
//public static final String KEY_SEMESTER= "semester";

public DBAdapter(Context ctx) {
this.context = ctx;
dbHelper = new DatabaseHelper(this.context);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context ctx) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//do nothing. The event is handled by the "prepareDatabase" method.
// db.execSQL(tbl_create);
            try {
                db.execSQL(tbl_create);
            } catch (SQLException e) {
                e.printStackTrace();
            }
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//do nothing. The event is handled by the "prepareDatabase" method.
Log.w(DatabaseHelper.class.getName(),"Upgrading database from version " + oldVersion + " to "
               + newVersion + ", which will destroy all old data");
       db.execSQL("DROP TABLE IF EXISTS " + TABLE_PENDUDUK);
       onCreate(db);
}
}
public DBAdapter open() throws SQLException {
db = dbHelper.getWritableDatabase(); //or getReadableDatabase() for read only access
return this;
}
public void close() {
dbHelper.close();
}
private boolean checkDatabase() {
SQLiteDatabase checkDb = null;
try {
checkDb = SQLiteDatabase.openDatabase(DATABASE_PATH + DATABASE_NAME,
null, SQLiteDatabase.OPEN_READONLY);
}
catch (SQLiteException ex) {
//Database does not exist yet
}
if(checkDb != null)
checkDb.close();
return checkDb != null ? true : false;
}
private void copyDatabase() throws IOException {
//get the SQLite database in the "assets" folder
InputStream input = context.getAssets().open(DATABASE_NAME);
//copy to the device path
OutputStream output = new FileOutputStream(DATABASE_PATH + DATABASE_NAME);
byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer))>0)
output.write(buffer,0,length); output.flush();
output.close();
input.close();
}
public void prepareDatabase() {
if(this.checkDatabase()) {
//do nothing. The database already exists
}
else {
dbHelper.getReadableDatabase();
try {
this.copyDatabase() ;
}
catch (IOException ex) {
throw new Error ("Error copying database");
}
}
}
public long insertPenduduk(String noKTP, String nama, String jk, String tempatLahir, String tanggalLahir, String statusNikah, String noTelp) {
ContentValues initialValues = new ContentValues();
initialValues.put(TABLE_PENDUDUK_noKTP, noKTP);
initialValues.put(TABLE_PENDUDUK_nama, nama );
initialValues.put(TABLE_PENDUDUK_jk, jk);
initialValues.put(TABLE_PENDUDUK_tempatLahir,tempatLahir); initialValues.put(TABLE_PENDUDUK_tglLahir,tanggalLahir); initialValues.put(TABLE_PENDUDUK_statusMenikah,statusNikah); initialValues.put(TABLE_PENDUDUK_noTelp,noTelp);
return db.insert(TABLE_PENDUDUK, null, initialValues);
}
//---updates a data--
public boolean updatePenduduk(String rowId, String noKTP, String nama, String jk, String tempatLahir, String tanggalLahir, String statusNikah, String noTelp) {
ContentValues initialValues = new ContentValues();
initialValues.put(TABLE_PENDUDUK_noKTP, noKTP);
initialValues.put(TABLE_PENDUDUK_nama, nama );
initialValues.put(TABLE_PENDUDUK_jk, jk);
initialValues.put(TABLE_PENDUDUK_tempatLahir,tempatLahir); initialValues.put(TABLE_PENDUDUK_tglLahir,tanggalLahir); initialValues.put(TABLE_PENDUDUK_statusMenikah,statusNikah); initialValues.put(TABLE_PENDUDUK_noTelp,noTelp);
      return db.update(TABLE_PENDUDUK, initialValues, TABLE_PENDUDUK_noKTP+ "='" + rowId+"'", null)> 0;
  }
//---deletes a particular contact--
  public boolean deletePenduduk(long rowId){
      return db.delete(TABLE_PENDUDUK, TABLE_PENDUDUK_noKTP + "=" + rowId, null) > 0;
  }
//This is custom function to retrieve all product
public Cursor getAllPenduduk() {
return db.query(TABLE_PENDUDUK, new String[] {
TABLE_PENDUDUK_noKTP, TABLE_PENDUDUK_nama, TABLE_PENDUDUK_jk, TABLE_PENDUDUK_tempatLahir, TABLE_PENDUDUK_tglLahir, TABLE_PENDUDUK_statusMenikah, TABLE_PENDUDUK_noTelp
}, null, null, null, null, TABLE_PENDUDUK_nama);
}

    //---retrieves a particular contact--
   public Cursor getDataPenduduk(String noKTP) throws SQLException
   {
  Cursor mCursor = db.query(true, TABLE_PENDUDUK, new String[] {TABLE_PENDUDUK_noKTP, TABLE_PENDUDUK_nama, TABLE_PENDUDUK_jk, TABLE_PENDUDUK_tempatLahir, TABLE_PENDUDUK_tglLahir, TABLE_PENDUDUK_statusMenikah, TABLE_PENDUDUK_noTelp}, TABLE_PENDUDUK_noKTP+ "=" + noKTP, null, null, null, null, null);
       if (mCursor != null) {
           mCursor.moveToFirst();
       }
       return mCursor;
   }
 
   public int jumlahData (String tanggal){
  Cursor c =  dbHelper.getReadableDatabase().rawQuery("SELECT " + TABLE_PENDUDUK_noKTP+ " from tbl_penduduk where tglInput between '1945-01-01' and '" + tanggal + "' ", null);

  return c.getCount();
   }
   public int jumlahDataByJk (String tanggal, String jk){
  Cursor c =  dbHelper.getReadableDatabase().rawQuery("SELECT jk from tbl_penduduk where jk='"+jk+"' and (tglInput between '1945-01-01' and '" + tanggal + "')", null);

  return c.getCount();
   }

}

Selanjutnya di layout fragment main activity buat tampilan seperti dibawah ini.
Berikut adalah script dari fragment_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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.sensusrt.MainActivity$PlaceholderFragment" >
   
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/judulAplikasi" />
         
    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
             <TextView
       android:id="@+id/textView2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="20dp"
       android:text="@string/LDataPertanggal" />
   <DatePicker
       android:id="@+id/DatePertanggal"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:calendarViewShown="false"
       android:minDate="01-01-1945"
       android:spinnersShown="true"
       android:startYear="1945" />
   <Button
       android:id="@+id/bResfrehData"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="@string/refreshData" />
   <TextView
       android:id="@+id/tRangkuman"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="TextView" />
   <Button
       android:id="@+id/bLihatData"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="@string/bLihatData" />
   <Button
       android:id="@+id/bTambahData"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="@string/bTambah" />
        </LinearLayout>
    </ScrollView>
</RelativeLayout> 
Selanjutnya adalah script untuk file MainActivity.java
package com.example.sensusrt;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.database.Cursor;
import android.database.SQLException;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
     
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
    public Button bTambahData, bRefreshData, bLihatData;
    public TextView tRangkuman;
    public DatePicker tanggalData;
        public PlaceholderFragment() {
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            bTambahData = (Button) rootView.findViewById(R.id.bTambahData);
            bTambahData.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent seninIntent = new Intent(getActivity(),FormPendataan.class);
startActivityForResult(seninIntent, 0);
}
});
         
            bRefreshData = (Button) rootView.findViewById(R.id.bResfrehData);
            bRefreshData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
refreshData();
}
});
            bLihatData = (Button) rootView.findViewById(R.id.bLihatData);
            bLihatData.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent seninIntent = new Intent(getActivity(),LihatDataActivity.class);
startActivityForResult(seninIntent, 0);
}
});
         
        tRangkuman = (TextView) rootView.findViewById(R.id.tRangkuman);
                tanggalData = (DatePicker) rootView.findViewById(R.id.DatePertanggal);
        tanggalData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
refreshData();
}
});
        DBAdapter db = new DBAdapter(getActivity());                 db.prepareDatabase();
       
refreshData();
        return rootView;
        }
     
        public void refreshData(){ //REFRESH DATA DARI DATABASE----------------
DBAdapter db = new DBAdapter(getActivity());
        try {
    db.open();         String tanggal = functionSendiri.formatTanggal(Integer.toString(tanggalData.getYear()), Integer.toString(tanggalData.getMonth()), Integer.toString(tanggalData.getDayOfMonth()));
    int jumlahL = db.jumlahDataByJk(tanggal, "L");
    int jumlahP = db.jumlahDataByJk(tanggal, "P");
    int jumlahSemuanya = db.jumlahData(tanggal);
        tRangkuman.setText("Banyaknya data yang sudah masuk : " + Integer.toString(jumlahSemuanya) +". Laki laki ada " + Integer.toString(jumlahL) + " orang. Perempuan ada " + Integer.toString(jumlahP) + " orang.");
    /*if(c.moveToFirst()){
    do {
    Toast.makeText(getActivity(), c.getString(0), Toast.LENGTH_SHORT).show();
    } while (c.moveToNext());
    }*/
    } catch (SQLException e) {
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    // TODO: handle exception
    }
        }
     
    }
}
 dibawah ini adalah gambar ketika main activity di jalankan.
Selanjutnya adalah membuat form untuk menambah dan mengedit data, buat activity baru dengan nama FormPendataan berikut adalah script untuk layout fragment_form_pendataan.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.sensusrt.FormPendataan$PlaceholderFragment" >
    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <LinearLayout
            android:id="@+id/LinearLayout2"
            android:layout_width="match_parent"
            android:layout_height="556dp"
            android:orientation="vertical" >
            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/tNoKtp" />
            <EditText
                android:id="@+id/tNoKTP"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="number" >
                <requestFocus />
            </EditText>
            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="@string/LNama" />
            <EditText
                android:id="@+id/tNama"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:singleLine="true" />
            <TextView
                android:id="@+id/tRangkuman"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="17dp"
                android:text="@string/lJenisKelamin" />
            <RadioGroup
                android:id="@+id/radioGroup1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
                <RadioButton
                    android:id="@+id/opLaki"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true"
                    android:text="@string/opLaki" />
                <RadioButton
                    android:id="@+id/opPerempuan"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/opPerempuan" />
            </RadioGroup>
            <TextView
                android:id="@+id/lNama"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dp"
                android:text="@string/LTempatLahir" />
            <EditText
                android:id="@+id/tTempatLahir"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:singleLine="true" />
            <DatePicker
                android:id="@+id/tTanggalLahir"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:calendarViewShown="false"
                android:spinnersShown="true" />
            <TextView
                android:id="@+id/lJk"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="14dp"
                android:text="@string/LStatusNikah" />
            <RadioGroup
                android:id="@+id/radioGroup2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
                <RadioButton
                    android:id="@+id/opNikah"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true"
                    android:text="@string/opNikah" />
                <RadioButton
                    android:id="@+id/opLajang"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/opLajang" />
            </RadioGroup>
            <TextView
                android:id="@+id/textView6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="18dp"
                android:text="@string/LNoTelp" />
            <EditText
                android:id="@+id/tNoTelp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="phone"
                android:singleLine="true" />
            <Button
                android:id="@+id/bSimpan"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/LkIRIM" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>
Selanjutnya adalah script untuk FormPendataan.java:
package com.example.sensusrt;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.text.format.DateFormat;
import android.database.Cursor;
import android.database.SQLException;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
public class FormPendataan extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_form_pendataan);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.form_pendataan, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public Button bSimpan;
public TextView tNoKTP, tNama, tTempatLahir, tNoTelp;
public RadioGroup radioJk, radioStatusNikah;
public RadioButton opLaki, opPerempuan, opNikah, opLajang;
public DatePicker tglLahir;
public String statusNikah, jk, tanggalLahir;
private boolean lagiEdit=false;
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_form_pendataan, container, false);
final DBAdapter db = new DBAdapter(getActivity());
db.open();
tNoKTP = (TextView) rootView.findViewById(R.id.tNoKTP);
tNama = (TextView) rootView.findViewById(R.id.tNama);
tNoTelp = (TextView) rootView.findViewById(R.id.tNoTelp);
tTempatLahir = (TextView) rootView.findViewById(R.id.tTempatLahir);
tglLahir = (DatePicker) rootView.findViewById(R.id.tTanggalLahir);
radioJk = (RadioGroup) rootView.findViewById(R.id.radioGroup1);
opLaki = (RadioButton) rootView.findViewById(R.id.opLaki);
opPerempuan = (RadioButton) rootView.findViewById(R.id.opPerempuan);
radioStatusNikah = (RadioGroup) rootView.findViewById(R.id.radioGroup2);
opNikah = (RadioButton) rootView.findViewById(R.id.opNikah);
opLajang = (RadioButton) rootView.findViewById(R.id.opLajang);
bSimpan = (Button) rootView.findViewById(R.id.bSimpan);
bSimpan.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
switch (radioJk.getCheckedRadioButtonId()) {
case R.id.opPerempuan:
jk="P";
break;
default:
jk="L";
break;
}
switch (radioStatusNikah.getCheckedRadioButtonId()) {
case R.id.opNikah:
statusNikah = "M";
break;
default:
statusNikah = "L";
break;
}
tanggalLahir = functionSendiri.formatTanggal(Integer.toString(tglLahir.getYear()) , Integer.toString(tglLahir.getMonth()), Integer.toString(tglLahir.getDayOfMonth()));
if(tNoKTP.getText().equals("")||tNama.getText().equals("")){
Toast.makeText(getActivity(), "Maaf data yang anda input tidak lengkap",Toast.LENGTH_SHORT).show(); }else{
long hasil=3;boolean hasilEdit=true;
if(lagiEdit==false){
hasil= db.insertPenduduk(tNoKTP.getText().toString(), tNama.getText().toString(), jk, tTempatLahir.getText().toString(), tanggalLahir, statusNikah, tNoTelp.getText().toString());
}else{
hasilEdit = db.updatePenduduk(tNoKTP.getText().toString(),tNoKTP.getText().toString(), tNama.getText().toString(), jk, tTempatLahir.getText().toString(), tanggalLahir, statusNikah, tNoTelp.getText().toString());
}
if(hasil==-1 || hasilEdit==false){
Toast.makeText(getActivity(), "Data gagal disimpan "+hasilEdit+hasil,Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getActivity(), "Data berhasil disimpan",Toast.LENGTH_SHORT).show();
tNoKTP.setText("");
tNama.setText("");
tTempatLahir.setText("");
tNoTelp.setText("");
}
}
}
});
String noKTP=functionSendiri.getExtraVariable("noKTP", getActivity().getIntent());
tNoKTP.setText(noKTP);
if(!noKTP.equals("")){
lagiEdit=true;
try {
Cursor c = db.getDataPenduduk(noKTP);
tNoKTP.setText(c.getString(0));
tNama.setText(c.getString(1));
if(c.getString(2)=="L"){
opLaki.setChecked(true);
}else{
opPerempuan.setChecked(true);
}
tTempatLahir.setText(c.getString(3));
if(c.getString(5)=="M"){
opNikah.setChecked(true);
}else{
opLajang.setChecked(true);
}
tNoTelp.setText(c.getString(6));
tNoKTP.setEnabled(false);
} catch (SQLException e) {
// TODO: handle exception
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}else{
lagiEdit=false;
}
return rootView;
}
}
}
Berikut tampilan form setelah di jalankan:

Form pendataan akan muncul setelah mengklik tombol Tambah yang ada di form utama.
Selanjutnya adalah membuat form untuk menampilkan data yang sudah diinput (lihat data), buat activity baru dengan nama LihatData. Dan berikut adalah script untuk layout fragment_lihat_data.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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.sensusrt.LihatDataActivity$PlaceholderFragment" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tampilData" />
    <ListView
        android:id="@+id/listData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1" >
    </ListView>
</RelativeLayout> 
dan berikut adalah script untuk file LihatDataActivity.java.
package com.example.sensusrt;
import java.util.ArrayList;
import java.util.Arrays;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.database.Cursor;
import android.database.SQLException;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class LihatDataActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lihat_data);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.lihat_data, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public ListView listData;
    private ArrayList<String> listItems =  new ArrayList<String>(Arrays.asList(""));
    private ArrayAdapter<String> adapter;
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_lihat_data,
container, false);
listData = (ListView) rootView.findViewById(R.id.listData);
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, listItems);
listData.setAdapter(adapter);
listData.setTextFilterEnabled(true);
adapter.setNotifyOnChange(true);
adapter.clear();
//String[] datanya = {};
DBAdapter db = new DBAdapter(getActivity());
        try {
    db.open();         Cursor c = db.getAllPenduduk();
    if(c.moveToFirst()){
    do {
    adapter.add(c.getString(1).toString()+"-"+c.getString(0).toString());
    } while (c.moveToNext());
        adapter.notifyDataSetChanged();
    }
    } catch (SQLException e) {
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    // TODO: handle exception
    }
                listData.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
//int itemke = position;
String itemText = (String) listData.getItemAtPosition(position);
Toast.makeText(getActivity(), "Anda mengklik " + itemText, Toast.LENGTH_LONG).show();
String[] noKtp = itemText.split("-");
//Toast.makeText(getActivity(), Integer.toString(noKtp.length), Toast.LENGTH_LONG).show();
if(noKtp.length>0){
Intent i = new Intent(getActivity(),FormDetilActivity.class);
//startActivityForResult(SeninIntent, 0);
//Toast.makeText(getActivity(), noKtp[1].toString(), Toast.LENGTH_LONG).show();
i.putExtra("noKTP", noKtp[1].toString());
startActivity(i);
}
}
        });
        return rootView;
}
}
}
Berikut adalah tampilan dari form LihatData setelah dijalankan.
Di form ini juga pengguna(Pak RT), bisa mencari data penduduk dengan mengetikan nama atau No. KTP yang diinginkan. Maka program dengan otomatis akan mencari data tersebut.

Untuk melihat detil dari data penduduk yang ditampilkan, pengguna tinggal mengklik (touch) data penduduk yang dinginkan. maka akan muncul detil data penduduk yang diklik tadi pada form detil penduk dari activity FormDetilActivity.


Script dari layout fragment_form_detil.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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.sensusrt.FormDetilActivity$PlaceholderFragment" >
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/lLihatDetil" />
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="22dp"
        android:text="@string/tNoKtp" />
    <TextView
        android:id="@+id/lNoKTP"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:text="@string/LNama" />
    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/lNoKTP"
        android:layout_below="@+id/lNoKTP"
        android:layout_marginTop="14dp"
        android:text="@string/LNama" />
    <TextView
        android:id="@+id/lNama"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView3"
        android:layout_below="@+id/textView3"
        android:text="@string/LNama" />
    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/lNama"
        android:layout_below="@+id/lNama"
        android:layout_marginTop="16dp"
        android:text="@string/lJenisKelamin" />
    <TextView
        android:id="@+id/lJk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView4"
        android:layout_below="@+id/textView4"
        android:text="@string/lJenisKelamin" />
    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/lJk"
        android:layout_below="@+id/lJk"
        android:layout_marginTop="16dp"
        android:text="@string/LTempatLahir" />
    <TextView
        android:id="@+id/lTTL"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView6"
        android:layout_below="@+id/textView6"
        android:text="@string/LTempatLahir" />
    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/lTTL"
        android:layout_below="@+id/lTTL"
        android:layout_marginTop="14dp"
        android:text="@string/LStatusNikah" />
    <TextView
        android:id="@+id/lStatusNikah"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView7"
        android:layout_below="@+id/textView7"
        android:text="@string/LStatusNikah" />
    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/lStatusNikah"
        android:layout_below="@+id/lStatusNikah"
        android:layout_marginTop="16dp"
        android:text="@string/LNoTelp" />
    <TextView
        android:id="@+id/lNoTelp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView8"
        android:layout_below="@+id/textView8"
        android:text="@string/LNoTelp" />
</RelativeLayout> 
 Kemudian ini script dari FormDetilActivity.java
package com.example.sensusrt;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.Intent;
import android.database.Cursor;
import android.database.SQLException;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;

public class FormDetilActivity extends ActionBarActivity {
static final private int EDIT_DATA = Menu.FIRST;
static final private int DELETE_DATA = Menu.FIRST + 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_form_detil);

if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.form_detil, menu);
super.onCreateOptionsMenu(menu);
 // Create and add new menu items.
 MenuItem itemAdd = menu.add(0, EDIT_DATA, Menu.NONE,
                             R.string.Edit);
 MenuItem itemRem = menu.add(0, DELETE_DATA, Menu.NONE,
                             R.string.Hapus);
 // Assign icons
 itemAdd.setIcon(R.drawable.edit);
 itemRem.setIcon(R.drawable.delete);
 // Allocate shortcuts to each of them.
 itemAdd.setShortcut('0', 'a');
 itemRem.setShortcut('1', 'r');
 
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}else if(id==EDIT_DATA){
Intent i = new Intent(this,FormPendataan.class);
//startActivityForResult(SeninIntent, 0);
//Toast.makeText(getActivity(), noKtp[1].toString(), Toast.LENGTH_LONG).show();
String noKTP=functionSendiri.getExtraVariable("noKTP", this.getIntent());
i.putExtra("noKTP", noKTP);
startActivity(i);
}else if(id==DELETE_DATA){
Intent i = new Intent(this,FormDetilActivity.class);
//startActivityForResult(SeninIntent, 0);
//Toast.makeText(getActivity(), noKtp[1].toString(), Toast.LENGTH_LONG).show();
DBAdapter db = new DBAdapter(this);
String noKTP=functionSendiri.getExtraVariable("noKTP", this.getIntent());
try {
db.open();
if(db.deletePenduduk(noKTP)==true){
Toast.makeText(this, "Data berhasil dihapus", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "Data gagal dihapus", Toast.LENGTH_LONG).show();
}
db.close();
} catch (SQLException e) {
// TODO: handle exception
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
i.putExtra("noKTP", noKTP);
startActivity(i);
}
return super.onOptionsItemSelected(item);
}

/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public TextView tNoKTP, tNama, tJK, tTTL, tStatusNikah, tNoTelp;
public PlaceholderFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_form_detil,
container, false);
tNoKTP = (TextView) rootView.findViewById(R.id.lNoKTP);
tNama = (TextView) rootView.findViewById(R.id.lNama);
tJK = (TextView) rootView.findViewById(R.id.lJk);
tTTL = (TextView) rootView.findViewById(R.id.lTTL);
tStatusNikah = (TextView) rootView.findViewById(R.id.lStatusNikah);
tNoTelp = (TextView) rootView.findViewById(R.id.lNoTelp);

String noKTP=functionSendiri.getExtraVariable("noKTP", getActivity().getIntent());
tNoKTP.setText(noKTP);
DBAdapter db = new DBAdapter(getActivity());
try {
db.open();
Cursor c = db.getDataPenduduk(noKTP);
tNoKTP.setText(c.getString(0));
tNama.setText(c.getString(1));
String Jk="";
if(c.getString(2)=="L"){
Jk="Laki-laki";
}else{
Jk="Perempuan";
}
tJK.setText(Jk);
tTTL.setText(c.getString(3) +", "+c.getString(4));
String statusNikah="";
if(c.getString(5)=="M"){
statusNikah="Menikah";
}else{
statusNikah="Lajang";
}
tStatusNikah.setText(statusNikah);
tNoTelp.setText(c.getString(6));
db.close();
} catch (SQLException e) {
// TODO: handle exception
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
}
return rootView;
}
}
}

Di form detil ini, pengguna bisa merubah atau menghapus data penduduk. Klik tombol menu pada handphone kemudian pilih edit atau hapus data.

Aplikasi jadi bisa didownload di alamat berikut ini:

Monday, May 19, 2014

Posted by Unknown 1:06 AM
1 comment

Oke, kali ini saya akan mencoba berbagi kepada teman-teman mengenai aplikasi sederhana "Cetak ganjil genap".

Aplikasi sederhanan ini berfungsi untuk mengetahui bilangan ganjil dan genap dari rentang bilangan yang sudah ditentukan oleh pengguna. Pengguna tinggal memasukan batas awal dan batas akhir kemudian pilih jenis bilangan yg ingin diketahui (Ganjil/ Genap).

Berikut adalah penjelasan mengenai cara membuat aplikasi.

Buat tampilan seperti gambar dibawah ini:


Berikut adalah source code nya.

package com.example.cetakbilangan;

import java.util.ArrayList;
import java.util.Arrays;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {
    public Button bCetak, bReset;
    public MediaPlayer mp;
    public RadioGroup groupJenisBilangan;
    public TextView tDari, tSampai;
    public ListView listBilangan;
    public RadioButton opGanjil, opGenap;
    public String pilihanBilangan="ganjil";
   
    int dari=0;
    int sampai=0;
    //LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS
    ArrayList<String> listItems =  new ArrayList<String>(Arrays.asList(""));

    ArrayAdapter<String> adapter;
        
        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            
            listBilangan=(ListView) rootView.findViewById(R.id.listBilangan);
            adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_dropdown_item_1line, listItems);
            listBilangan.setAdapter(adapter);
            
            tDari = (TextView) rootView.findViewById(R.id.tDari);
            tSampai = (TextView) rootView.findViewById(R.id.tSampai);
            
            bCetak = (Button) rootView.findViewById(R.id.bCetak);
            bCetak.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
dari = Integer.parseInt(tDari.getText().toString());
sampai = Integer.parseInt(tSampai.getText().toString());
adapter.setNotifyOnChange(true);
adapter.clear();
mp = MediaPlayer.create(getActivity(), R.raw.tone);
mp.setLooping(false);
mp.start();
Toast.makeText(getActivity(), "Anda memilih bilangan: " + pilihanBilangan , Toast.LENGTH_LONG).show();
          for (int bilangan=dari ; bilangan<= sampai; bilangan++) {
               if(pilihanBilangan.equals("ganjil")){
if((bilangan%2)!=0){
//bilangannya[bilangan]= String.valueOf(bilangan).toString();
adapter.add(Integer.toString(bilangan).toString());
}
}else if(pilihanBilangan.equals("genap")){
if((bilangan%2)==0){
adapter.add(Integer.toString(bilangan).toString());
}
}
          }
          
          //adapter.notifyDataSetChanged();
 
/*for(int bilangan=dari;dari<=sampai;bilangan++){
if(pilihanBilangan.equals("ganjil")){
if(bilangan%2!=0){
//bilangannya[bilangan]= String.valueOf(bilangan).toString();
//adapter.add(Integer.toString(bilangan));
}
}else if(pilihanBilangan.equals("genap")){
if(bilangan%2==0){
//adapter.add(Integer.toString(bilangan));
}
}
}*/
// adapter.notifyDataSetChanged();
}
});
            
           
            bReset = (Button) rootView.findViewById(R.id.bReset);
            bReset.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tDari.setText("");
tSampai.setText("");
adapter.clear();
opGanjil.setChecked(false);
opGenap.setChecked(false);
}
});
            
           groupJenisBilangan = (RadioGroup) rootView.findViewById(R.id.groupJenisBilangan);
           opGanjil = (RadioButton) rootView.findViewById(R.id.opGanjil);
           opGenap = (RadioButton) rootView.findViewById(R.id.opGenap);
           
           groupJenisBilangan.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
switch (checkedId) {
case R.id.opGanjil:
Toast.makeText(getActivity(), "Anda memilih bilangan: " + opGanjil.getText().toString() , Toast.LENGTH_LONG).show();
pilihanBilangan = "ganjil";
break;
case R.id.opGenap:
Toast.makeText(getActivity(), "Anda memilih bilangan: " + opGenap.getText().toString() , Toast.LENGTH_LONG).show();
pilihanBilangan = "genap";
break;
}
}
});
            return rootView;
        }
    }

}

sekian. Terimakasih.


Wednesday, April 2, 2014

Posted by Unknown 12:29 AM
No comments
Postingan kali ini saya akan memaparkan kepada pembaca cara membuat aplikasi Android sederhana yaitu program untuk Menghitung Keliling Segitiga Sembarang.

Saya asumsikan Anda sudah mengerti mengenai tools yang harus digunakan untuk membuat aplikasi android (Android Development Tool, SDK dan Android Device).

Baik langsung mulai saja, pertama buat project baru dengan nama KelilingSegitigaSembarang.






Buka file fragmen_main.xml yang ada di folder res->layouts.

 Klik tab untuk menampilkan script nya.


kemudian masukan kode berikut ini setelah  tools:context="com.example.kelilingsegitigasembarang.MainActivity$PlaceholderFragment" >:

    <TextView
        android:id="@+id/lJudul"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/judul" />
    <TextView
        android:id="@+id/labelSisi1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="23dp"
        android:text="@string/labelSisi1" />
    <EditText
        android:id="@+id/tSisi1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/labelSisi1"
        android:layout_below="@+id/labelSisi1"
        android:ems="10"
        android:inputType="number" >
        <requestFocus />
    </EditText>
    <EditText
        android:id="@+id/tSisi3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/TextView02"
        android:layout_below="@+id/TextView02"
        android:ems="10"
        android:inputType="number" />
    <EditText
        android:id="@+id/tSisi2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/TextView01"
        android:layout_below="@+id/TextView01"
        android:ems="10"
        android:inputType="number" />
    <TextView
        android:id="@+id/TextView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tSisi2"
        android:layout_below="@+id/tSisi2"
        android:layout_marginTop="14dp"
        android:text="@string/labelSisi3" />
    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tSisi1"
        android:layout_below="@+id/tSisi1"
        android:layout_marginTop="14dp"
        android:text="@string/labelSisi2" />
    <TextView
        android:id="@+id/TextView03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tHasil"
        android:layout_below="@+id/tSisi3"
        android:layout_marginTop="16dp"
        android:text="@string/labelHasil" />
    <EditText
        android:id="@+id/tHasil"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tSisi3"
        android:layout_below="@+id/TextView03"
        android:ems="10"
        android:inputType="number" />
    <Button
        android:id="@+id/bHitung"
        style="@style/AppBaseTheme"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tHasil"
        android:layout_marginTop="18dp"
        android:text="@string/labelButtonHitung" />
    <Button
        android:id="@+id/bReset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/bHitung"
        android:layout_toRightOf="@+id/bHitung"
        android:text="@string/labelButtonReset" />

Kenapa, aya error?. Tenang Belum selesai, selanjutnya buka file strings.xml yang ada di folder res->values kemudian masukan kode berikut ini setelah <resource>:
<string name="app_name">KelSegitigaSembarang</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="judul">Keliling Segitiga Sembarang</string>
<string name="labelSisi1">Sisi 1</string>
<string name="labelSisi2">Sisi 2</string>
<string name="labelSisi3">Sisi 3</string>
<string name="labelHasil">Hasil</string>
<string name="labelButtonHitung">Htiung</string>
<string name="labelButtonReset">Reset</string>
 Selanjutnya buka file MainActivity.java yang ada di folder src tambahkan kode berikut:
Cari script seperti pada baris 57, kemudian tambahkan script dibawahnya (Maaf, untuk bagian ini saya buat gambar :D).
Selanjutnya:
Cari script seprti pada baris 63, kemudian tambahkan script dari baris 66 sampai 85.

Selesai, berikut screen shoot aplikasi saat dijalankan di emulator.

Download File APK Nya.

Sunday, January 26, 2014

Posted by Unknown 5:57 AM
2 comments

Desain Form Aplikasi:


Source Code aplikasi:

Imports System.Data.OleDb
Imports word = Microsoft.Office.Interop.Word

Public Class Form1
    Public koneksi As OleDbConnection = Nothing
    Public command As OleDbCommand = Nothing
    Public reader As OleDbDataAdapter = Nothing
    Function Connect()
        If Not koneksi Is Nothing Then
            koneksi.Close()
        End If
        koneksi.Open()
        Return koneksi
    End Function
    Function Closedd()
        koneksi.Close()
        Return koneksi
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not koneksi Is Nothing Then koneksi.Close()

        Dim koneksiString As String

        koneksiString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\02. PERPUSTAKAAN\Kuliah\Semester 5\Visual Programming\aplikasiPenjualanSederhanan\db_penjualan.accdb"

        Try
            koneksi = New OleDbConnection(koneksiString)
            koneksi.Open()
            Me.Text = "Form Penjualan Barang"
            koneksi.Close()
        Catch ex As Exception
            MessageBox.Show("Koneksi Error : " + ex.Message)
        End Try

        refreshCombo()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Connect()
        If (Val(tTotal.Text) > 0) Then
             Try
                Dim dt As New DataTable
                Dim query = "select * from tb_penjualan where noFaktur='" & tNoFaktur.Text & "'"
                reader = New OleDbDataAdapter(query, koneksi)
                reader.Fill(dt)

                If dt.Rows.Count = 0 Then
                    command = New OleDbCommand("INSERT INTO tb_penjualan(noFaktur,kodeBarang,QTY,total)values('" & tNoFaktur.Text & "','" & tKodeBarang.Text & "','" & tQty.Text & "','" & tTotal.Text & "')", koneksi)
                    Dim hasil As Integer = command.ExecuteNonQuery
                    If hasil > 0 Then
                        MessageBox.Show("Transaksi berhasil diproses", "Transaksi Faktur", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        kosongkan()
                        refreshCombo()
                    End If
                Else
                    MessageBox.Show("Transaksi gagal diproses, no faktur sudah terdaftar", "Transaksi Faktur", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If
            Catch ex As Exception

            End Try

        End If
    End Sub

    Private Sub tKodeBarang_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tKodeBarang.KeyPress
        If Asc(e.KeyChar) = 13 Then
            Call ambilDataBarang()
        End If
    End Sub

    Sub ambilDataBarang()
        Try
            Dim dt As New DataTable
            Dim query = "select * from tb_barang where kodeBarang='" & tKodeBarang.Text & "'"
            reader = New OleDbDataAdapter(query, koneksi)
            reader.Fill(dt)

            If dt.Rows.Count > 0 Then
                tNamaBarang.Text = dt.Rows(0).Item("namaBarang").ToString
                tHargaSatuan.Text = dt.Rows(0).Item("hargaBarang").ToString
            End If
        Catch ex As Exception

        End Try

        tQty.Focus()
    End Sub

    Private Sub tQty_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tQty.KeyUp
        tTotal.Text = Val(tQty.Text) * Val(tHargaSatuan.Text)
    End Sub

    Private Sub kosongkan()
        tNoFaktur.Text = ""
        tKodeBarang.Text = ""
        tNamaBarang.Text = ""
        tHargaSatuan.Text = ""
        tQty.Text = ""
        tTotal.Text = ""
        tNoFaktur.Focus()
    End Sub

    Private Sub refreshCombo()
        Try
            Dim dt As New DataTable
            Dim query = "select * from tb_penjualan"
            reader = New OleDbDataAdapter(query, koneksi)
            reader.Fill(dt)

            comboNoFaktur.Items.Clear()
            If dt.Rows.Count > 0 Then
                For i = 0 To dt.Rows.Count
                    comboNoFaktur.Items.Add(dt.Rows(i).Item("noFaktur").ToString)
                Next
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try
            Dim dt As New DataTable
            Dim query = "select * from qw_penjualan where noFaktur='" & comboNoFaktur.Text & "'"
            reader = New OleDbDataAdapter(query, koneksi)
            reader.Fill(dt)

            If dt.Rows.Count > 0 Then
                ' MsgBox(dt.Rows(0).Item("noFaktur").ToString)
                Dim myWordApp As New word.Application
                Dim myWordDoc As New word.Document
                Dim hasil As New Integer
                myWordDoc = myWordApp.Documents.Open("E:\02. PERPUSTAKAAN\Kuliah\Semester 5\Visual Programming\aplikasiPenjualanSederhanan\faktur.docx")

                myWordDoc.Bookmarks("noFaktur").Select()
                myWordApp.Selection.TypeText(dt.Rows(0).Item("noFaktur").ToString)

                myWordDoc.Bookmarks("kodeBarang").Select()
                myWordApp.Selection.TypeText(dt.Rows(0).Item("kodeBarang").ToString)

                myWordDoc.Bookmarks("namaBarang").Select()
                myWordApp.Selection.TypeText(dt.Rows(0).Item("namaBarang").ToString)


                myWordDoc.Bookmarks("hargaBarang").Select()
                myWordApp.Selection.TypeText(dt.Rows(0).Item("hargaBarang").ToString)


                myWordDoc.Bookmarks("QTY").Select()
                myWordApp.Selection.TypeText(dt.Rows(0).Item("QTY").ToString)

                myWordDoc.Bookmarks("total").Select()
                myWordApp.Selection.TypeText(dt.Rows(0).Item("total").ToString)

                myWordApp.Visible = True
                myWordApp.PrintPreview = True
                myWordDoc.SaveAs2("E:\02. PERPUSTAKAAN\Kuliah\Semester 5\Visual Programming\aplikasiPenjualanSederhanan\" & tNoFaktur.Text & ".docx")
                'myWordApp.Quit()
            End If
        Catch ex As Exception

        End Try
    End Sub
End Class

Screenshot Aplikasi:
Gambar Ketika Transaksi







Sunday, December 22, 2013

Posted by Unknown 6:03 PM in
1 comment
Apa kabar?
Ok, luarbiasa...

Postingan kali ini, saya coba mempublish program sederhana untuk mendata pegawai baru yang akan masuk di sebuah perusahaan.

Berikut adalah tampilan/screenshoot program nya:


Dan berikut adalah source code programnya:

Imports System.Data.OleDb 'untuk koneksi ke database menggunakan OLDB
Imports excel = Microsoft.Office.Interop.Excel 'librarry ms office untuk bisa export ke MsExcel
Imports word = Microsoft.Office.Interop.Word 'librarry ms office untuk bisa export ke MsWord
Public Class formCalonPegawai
    'Dim koneksi As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\02. PERPUSTAKAAN\Kuliah\Semester 5\Visual Programming\aplikasiReqruitmentPegawai\dataPegawai.accdb")
    Private jenisKelamin As String, statusMenikah As String, statusTerima As String
    Private sedangEdit As Boolean = False
    Private Conn As OleDbConnection = Nothing
    Private cmd As OleDbCommand = Nothing
    Private sql As String = Nothing
    Private reader As OleDbDataReader = Nothing
    Private da As OleDbDataAdapter = Nothing
    Function Connect()
        If Not Conn Is Nothing Then
            Conn.Close()
        End If
        Conn.Open()
        Return Conn
    End Function
    Function Closedd()
        Conn.Close()
        Return Conn
    End Function

    Sub Tampil()
        Dim baris As Integer
        Connect()

        Try
            Dim dt As New DataTable
            da = New OleDbDataAdapter("select * from tbl_pegawai", Conn)
            da.Fill(dt)
            Dim alamat As String
            ListView1.Items.Clear()
            For baris = 0 To dt.Rows.Count - 1
                alamat = "Jalan:" & dt.Rows(baris).Item("jalan").ToString & " RT/RW:" & dt.Rows(baris).Item("rt").ToString & "/" & dt.Rows(baris).Item("rw").ToString
                Dim itemListView As New ListViewItem
                itemListView.Text = dt.Rows(baris).Item("noKtp").ToString
                itemListView.SubItems.Add(dt.Rows(baris).Item("nama").ToString)
                itemListView.SubItems.Add(dt.Rows(baris).Item("tempatLahir").ToString)
                itemListView.SubItems.Add(dt.Rows(baris).Item("tanggalLahir").ToString)
                itemListView.SubItems.Add(dt.Rows(baris).Item("jenisKelamin").ToString)
                itemListView.SubItems.Add(alamat)
                itemListView.SubItems.Add(dt.Rows(baris).Item("agama").ToString)
                itemListView.SubItems.Add(dt.Rows(baris).Item("statusNikah").ToString)
                itemListView.SubItems.Add(dt.Rows(baris).Item("statusTerima").ToString)
                ListView1.Items.Add(itemListView)
            Next

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

        Closedd()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Conn Is Nothing Then Conn.Close()

        Dim ConnString As String

        ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\02. PERPUSTAKAAN\Kuliah\Semester 5\Visual Programming\aplikasiReqruitmentPegawai\dataPegawai.accdb"
        Try
            Conn = New OleDbConnection(ConnString)
            Conn.Open()
            Me.Text = "Data Penerimaan Calon Pegawai"
            Tampil()
            Conn.Close()
        Catch ex As Exception
            MessageBox.Show("Koneksi Error : " + ex.Message)
        End Try

        ListView1.Columns.Add("No. KTP")
        ListView1.Columns.Add("Nama")
        ListView1.Columns.Add("Tempat Lahir")
        ListView1.Columns.Add("Tanggal Lahir")
        ListView1.Columns.Add("Jenis Kelamin")
        ListView1.Columns.Add("Alamat")
        ListView1.Columns.Add("Agama")
        ListView1.Columns.Add("Status Nikah")
        ListView1.Columns.Add("Status")
        ListView1.View = View.Details
        ListView1.FullRowSelect = True

        cAgama.Items.Add("Islam")
        cAgama.Items.Add("Protestan")
        cAgama.Items.Add("Katholik")
        cAgama.Items.Add("Hindu")
        cAgama.Items.Add("Budha")
        cAgama.Items.Add("Konghucu")
    End Sub

    Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        statusTerima = "1"
    End Sub

    Private Sub bSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSimpan.Click
        Connect()
        Dim insertquery As String
        Dim Hasil As Integer
        Dim cmd As OleDbCommand

        If sedangEdit = False Then
            insertquery = ("insert into tbl_pegawai(noKtp, nama, tempatLahir, tanggalLahir, jenisKelamin, jalan, rt, rw, desa, kec, kabKota, agama, statusNikah, statusTerima)Values('" & tNoKTP.Text & "','" & tNama.Text & "','" & tTempatLahir.Text & "','" & tTanggalLahir.Text & "','" & jenisKelamin & "','" & tJalan.Text & "','" & tRT.Text & "','" & tRW.Text & "','" & tDesa.Text & "','" & tKec.Text & "','" & tKab.Text & "','" & cAgama.Text & "','" & statusMenikah & "','" & statusTerima & "')")
        Else
            insertquery = "UPDATE tbl_pegawai set nama='" & tNama.Text & "', tempatLahir='" & tTempatLahir.Text & "', tanggalLahir='" & tTanggalLahir.Value & "', jenisKelamin='" & jenisKelamin & "', jalan='" & tJalan.Text & "', rt='" & tRT.Text & "', rw='" & tRW.Text & "', desa='" & tDesa.Text & "', kec='" & tKec.Text & "', kabKota='" & tKab.Text & "', agama='" & cAgama.Text & "', statusNikah='" & statusMenikah & "', statusTerima='" & statusTerima & "' where noKtp='" & tNoKTP.Text & "'"
        End If

        Try
            cmd = New OleDbCommand(insertquery, Conn)
            Hasil = cmd.ExecuteNonQuery
            If Hasil > 0 Then
                MessageBox.Show("Record Berhasil Dimasukan", "Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Tampil()

            End If
        Catch ex As OleDbException
            MessageBox.Show("Failed : " & ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        bEdit.Enabled = True
        bHapus.Enabled = True
        sedangEdit = False
        tNoKTP.Enabled = True
        kosong()
        Closedd()
    End Sub
    Private Sub bEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bEdit.Click
        Dim baris As Integer
        For baris = 0 To ListView1.Items.Count - 1
            If ListView1.Items(baris).Selected = True Then
                Dim dt As New DataTable
                da = New OleDbDataAdapter("select * from tbl_pegawai where noKtp='" & ListView1.Items(baris).Text & "'", Conn)
                da.Fill(dt)

                tNoKTP.Text = dt.Rows(0).Item("noKtp").ToString
                tNama.Text = dt.Rows(0).Item("nama").ToString
                tTempatLahir.Text = dt.Rows(0).Item("tempatLahir").ToString
                tTanggalLahir.Value = dt.Rows(0).Item("tanggalLahir").ToString
                If dt.Rows(0).Item("jenisKelamin").ToString = "Laki-laki" Then
                    opLaki.Checked = True
                Else
                    opPerempuan.Checked = True
                End If

                tJalan.Text = dt.Rows(0).Item("jalan").ToString
                tRT.Text = dt.Rows(0).Item("rt").ToString
                tRW.Text = dt.Rows(0).Item("rw").ToString
                tDesa.Text = dt.Rows(0).Item("desa").ToString
                tKec.Text = dt.Rows(0).Item("kec").ToString
                tKab.Text = dt.Rows(0).Item("kabkota").ToString
                cAgama.Text = dt.Rows(0).Item("agama").ToString

                If dt.Rows(0).Item("statusNikah").ToString = "1" Then
                    opSudahMenikah.Checked = True
                Else
                    opBelumMenikah.Checked = True
                End If

                If dt.Rows(0).Item("statusTerima").ToString = "1" Then
                    opDiterima.Checked = True
                ElseIf dt.Rows(0).Item("statusTerima").ToString = "2" Then
                    opPending.Checked = True
                ElseIf dt.Rows(0).Item("statusTerima").ToString = "3" Then
                    opDitolak.Checked = True
                End If

                sedangEdit = True
                bEdit.Enabled = False
                bHapus.Enabled = False
                tNoKTP.Enabled = False
            End If
        Next
    End Sub

    Private Sub opLaki_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles opLaki.CheckedChanged
        jenisKelamin = "Laki-laki"
    End Sub

    Private Sub opPerempuan_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles opPerempuan.CheckedChanged
        jenisKelamin = "Perempuan"
    End Sub

    Private Sub opSudahMenikah_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles opSudahMenikah.CheckedChanged
        statusMenikah = "1"
    End Sub

    Private Sub opBelumMenikah_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles opBelumMenikah.CheckedChanged
        statusMenikah = "0"
    End Sub

    Sub kosong()
        tNoKTP.Text = ""
        tNama.Text = ""
        tTempatLahir.Text = ""
        tJalan.Text = ""
        tRT.Text = ""
        tRW.Text = ""
        tDesa.Text = ""
        tKec.Text = ""
        tKab.Text = ""
        cAgama.Text = ""
    End Sub

    Private Sub opDiterima_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles opDiterima.CheckedChanged
        statusTerima = "1"
    End Sub

    Private Sub opDitolak_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles opDitolak.CheckedChanged
        statusTerima = "3"
    End Sub

    Private Sub opPending_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles opPending.CheckedChanged
        statusTerima = "2"
    End Sub

    Private Sub bHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bHapus.Click
        Connect()
        Dim query As String
        Dim Hasil As Integer
        Dim cmd As OleDbCommand
        For baris = 0 To ListView1.Items.Count - 1
            If ListView1.Items(baris).Selected = True Then
                query = "DELETE FROM tbl_pegawai where noKtp='" & ListView1.Items(baris).Text & "'"
                Try
                    cmd = New OleDbCommand(query, Conn)
                    Hasil = cmd.ExecuteNonQuery
                    If Hasil > 0 Then
                        MessageBox.Show("Record Berhasil dihapus", "Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        Tampil()
                    End If
                Catch ex As OleDbException
                    MessageBox.Show("Failed : " & ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try
            End If
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'UNTUK EXPORT KE EXCEL

        Dim excelApp = New excel.Application
        Dim excelWorkbook = excelApp.Workbooks.Open("E:\02. PERPUSTAKAAN\Kuliah\Semester 5\Visual Programming\aplikasiReqruitmentPegawai\dataPegawai.xlsx")

        Dim noRow As Integer
     
        Dim baris As Integer
        Connect()

        Try
            Dim dt As New DataTable
            da = New OleDbDataAdapter("select * from tbl_pegawai", Conn)
            da.Fill(dt)
            For baris = 0 To dt.Rows.Count - 1
                noRow = noRow + 1
                excelApp.Range("A" & (noRow + 1)).Value = noRow
                excelApp.Range("B" & (noRow + 1)).Value = dt.Rows(baris).Item("noKtp").ToString()
                excelApp.Range("C" & (noRow + 1)).Value = dt.Rows(baris).Item("nama").ToString()
                excelApp.Range("D" & (noRow + 1)).Value = dt.Rows(baris).Item("tempatLahir").ToString()
                excelApp.Range("E" & (noRow + 1)).Value = dt.Rows(baris).Item("tanggalLahir").ToString()
                excelApp.Range("F" & (noRow + 1)).Value = dt.Rows(baris).Item("jenisKelamin").ToString()
                excelApp.Range("G" & (noRow + 1)).Value = dt.Rows(baris).Item("jalan").ToString()
                excelApp.Range("H" & (noRow + 1)).Value = dt.Rows(baris).Item("rt").ToString()
                excelApp.Range("I" & (noRow + 1)).Value = dt.Rows(baris).Item("rw").ToString()
                excelApp.Range("J" & (noRow + 1)).Value = dt.Rows(baris).Item("desa").ToString()
                excelApp.Range("K" & (noRow + 1)).Value = dt.Rows(baris).Item("kec").ToString()
                excelApp.Range("L" & (noRow + 1)).Value = dt.Rows(baris).Item("kabkota").ToString()
                excelApp.Range("M" & (noRow + 1)).Value = dt.Rows(baris).Item("agama").ToString()
                excelApp.Range("N" & (noRow + 1)).Value = dt.Rows(baris).Item("statusNikah").ToString()
                excelApp.Range("O" & (noRow + 1)).Value = dt.Rows(baris).Item("statusTerima").ToString()
            Next

            excelWorkbook.Save()
            If (MessageBox.Show("Data berhasildi export, klik ok untuk membuka file", "Export", MessageBoxButtons.OKCancel) = Windows.Forms.DialogResult.OK) Then
                excelApp.Visible = True
            Else
                excelWorkbook.Close()
                excelApp.Quit()
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        Closedd()
    End Sub
End Class



Search

Our Sponsors