Membuat Kamus Digital

Kamus digital adalah kamus yang bisa di muat dalam HP, agar mudah di akses, dan mudah di baca kapanpun dan dimanapun. Tentunya HP-nya android dong.
Kamus digital yang akan saya bangun ini adalah spesial, karena untuk menjalankan-nya ia tidak membutuhkan koneksi network atau koneksi internet.
Kamus Digital ini juga akan meniru pencarian di google, dimana ia akan dengan cepat menebak kira2 kata apa yang kita mau cari, ia akan  menyuguhkan ke layar HP  berbagai pilihan kata dari yang hampir benar sampai yang paling benar. Dan ketika di klik pada kata yang di butuhkan maka aplikasi akan membukanya dan memperlihatkan isinya(arti kata). Perhatikan gambar2 berikut


Gambar berikut menunjukan kecerdasan mencari dari aplikasi ini, ketika ketik huruf  'a' maka aplikasinya dengan cepat mencari database untuk semua yang di awali huruf  'a'. Ia mencoba menebak apa yang mau di cari oleh pengguna sehingga mudah untuk mendapatkan kata apa yang mau di cari.


Setelah pengguna menemukan kata yang ingin di cari maka aplikasi ini mempersembahkan soft keyboard yang siap di pergunakan untuk pencarian kata(data) selanjutnya.

Langkah membangun aplikasi Kamus Digital ini akan mengikuti nalar dan logika cara berpikir dari kebanyakan orang (orang biasa) seperti saya dan anda. Oleh karena itu, logikanya bahwa kalau mau menyimpan kamus di dalam HP tentunya kita harus membuat HP-nya agar bisa melakukan hal2 dengan kriteria sbb:

1. Bisa mebuka kamus
2. Ada penghubung antara aplikasi dan data.
3. Ada tempat untuk bisa menampung data
4. Ada tempat untuk menampilkan kata2

Kalau kita terjemahkan ke 4 logika di atas masing2 kedalam class program java maka pembuka kamus adalah identik dengan class 'main' yang sebagian besar aktivitasnya adalah hanya untuk memulai dan membuka aplikasi 'Kamus Digital' ini. Secara sederhana class main dalam bahasa program java(android) adalah mirip dengan home page pada halaman web, yaitu kerja utamanya adalah sebagai pintu masuk kedalam web atau aplikasi. Tentunya halaman depan atau home page dapat bekerja lebih banyak daripada sekedar pintu masuk, demikian juga halnya dengan class main pada aplikasi yang di bangun pakai bahasa program java, seperti aplikasi android yang sedang kita bicarakan di sini.

1.a Bisa membuka kamus

Sebagai class main atau sebagai pintu masuk dan atau sebagai halaman awal dari aplikasi' Kamus Digital' ini, maka saya akan membuatkan class yang saya beri nama KamusDigital.java silahkan membuat nama class sesuai logika masing2
Berikiut adalah isi dari class KamusDigital.java
/*
 * Copyright (C)Vik Sintus Projects
 *
 * Segala kelebihan dan kekurangan di luar tanggung jawab pembuat.
 * Di larang memakai kode ini untuk kepentingan komersial tanpa ijin.
 * Silahkan di pakai untuk kepentingan belajar.
 * vik.sintus@gmail.com
 *
 * Unless required by applicable law or agreed to in writing, this software
 * is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * 
 * 
 */

package com.vik_sintus.projects.kamusDigital;

import android.app.Activity;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

/**
 * beraksi sebagai halaman depan (main).
 * yang menayangkan hasil pencarian dari 'search dialog' dan
 * menghandle aksi apa yg di lakukan dengan hasil.
 */
public class KamusDigital extends Activity {

    private TextView munculTulisan;
    private ListView barisanKata;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tampilan);

        munculTulisan = (TextView) findViewById(R.id.tulisanMuncul);
        barisanKata = (ListView) findViewById(R.id.barisDemiBaris);

        handleIntent(getIntent());
    }

    @Override
    protected void onNewIntent(Intent intent) {
        // oleh karena aktivitas-nya di set dengan launchMode="singleTop", itu berarti 
        // halaman(aktivitas) dapat di daur ulang dalam arti kalau halaman telah 
     // di buka sebelumnya maka tak perlu di buka lagi tapi hanya menghidupkan 
     // intent pada halaman tsb sehingga mengangkatnya ke depan (terlihat lagi)
        
     
        
        handleIntent(intent);
    }

    private void handleIntent(Intent intent) {
        if (Intent.ACTION_VIEW.equals(intent.getAction())) {
            // mengatur klik utk search suggestion dan menghidupkan
         // activity yg membuat kata2 bisa di klik
            Intent agarKataDptDiKlik = new Intent(this, TampilanKata.class);
            agarKataDptDiKlik.setData(intent.getData());
            startActivity(agarKataDptDiKlik);
            finish();
        } else if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            // mengatur query pencarian
            String query = intent.getStringExtra(SearchManager.QUERY);
            showResults(query);
        }
    }

    /**
     * cari di kamus dan tunjukan hasil dari query tertentu
     * @parameter query-nya adalah search query
     */
    private void showResults(String query) {

        Cursor cursor = managedQuery(PenghubungData.CONTENT_URI, null, null,
                                new String[] {query}, null);

        if (cursor == null) {
            // kalau tak ada hasil di ketemukan
            munculTulisan.setText(getString(R.string.tak_ada_hasil, new Object[] {query}));
        } else {
            // tunjukan beberapa hasil
            int count = cursor.getCount();
            String countString = getResources().getQuantityString(R.plurals.hasil_pencarian,
                                    count, new Object[] {count, query});
            munculTulisan.setText(countString);

            // KATA di taruh di kolom 'kolomKata' 
            // ARTI_NYA di taruh di 'kolomArtinya'
            String[] dari = new String[] { KamusDatabase.KATA,
                                           KamusDatabase.ARTI_NYA };

            // buatkan hubungan antara design element, dimana kolom akan muncul 
            int[] ke = new int[] { R.id.kolomKata,
                                   R.id.kolomArtinya };

            // buatkan cursor adapter sederhana utk semua kata dan 
            // artinya dan tayangkan baris demi baris(ListView) pada layar
            SimpleCursorAdapter letakanKataPadaTempatnya = new SimpleCursorAdapter(this,
                                          R.layout.hasil, cursor, dari, ke);
            barisanKata.setAdapter(letakanKataPadaTempatnya);

            // apa yg terjadi saat klik pada kata2 yang telah berjajar baris demi baris di layar 
            barisanKata.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    // ketika sebauh kata dapat di klik
                    Intent kataDiKlik = new Intent(getApplicationContext(), TampilanKata.class);
                    Uri data = Uri.withAppendedPath(PenghubungData.CONTENT_URI,
                                                    String.valueOf(id));
                    kataDiKlik.setData(data);
                    startActivity(kataDiKlik);
                }
            });
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater perpanjangTampilan = getMenuInflater();
        perpanjangTampilan.inflate(R.menu.untuk_menu, menu);

        SearchManager mengaturSearch = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView tampilanSearch = (SearchView) menu.findItem(R.id.cari).getActionView();
        tampilanSearch.setSearchableInfo(mengaturSearch.getSearchableInfo(getComponentName()));
        tampilanSearch.setIconifiedByDefault(false);

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.cari:
                onSearchRequested();
                return true;
            default:
                return false;
        }
    }
}
Untuk sekarang saya kehabisan waktu, nanti akan saya buatkan ke 3 class lain-nya, sehingga kalau semuanya sudah termuat disini maka siapapun bisa copy dan paste untuk di pakai di aplikasi masing2. Apalagi bagi mereka yang bisa bahasa asing, aplikasi macam ini bisa di adaptasikan, dapat di jual di pasar bebas seperti 'google play' dll. Calon developer Kamus Digital ini hanya akan mengisi data terjemahan dari bahasa asing yang dia tahu, misalnya Indonesia-Jerman, Prancis-Indonesia, Manggarai-Bajawa dll.

2.a Ada Penghubung Antara Aplikasi dan Data

Silah melihat class penghubung antara aplikasi dan data di sini