LISTING PROGRAM
/*** UtamaActivity***/
private SearchView searchView = null;
private SearchView.OnQueryTextListener queryTextListener; SQLiteOpenHelper helper;
SQLiteDatabase db; Cursor cursor;
private List<Result> resultList = new ArrayList<Result>();
private ListView listView;
private CustomListAdapter adapter; String hh = "";
int state = 1;
double startTime, finisTime, totalTime;
long comp;
String yangdicari;
int jumlahTotal; @Override
public boolean onQueryTextSubmit(String query) { String pat = query;
totalTime = 0;
resultList.clear(); try {
helper = new
DatabaseOpenHelper(UtamaActivity.this); cursor = null; comp = 0;
yangdicari = pat; jumlahTotal = 0; String tb_name; if (state == 1) {
tb_name = "Indonesia"; } else {
tb_name = "Karo"; }
db = helper.getReadableDatabase();
//cursor = db.rawQuery("SELECT * FROM Bank Order by " + tb_name + " ASC ;", null);
//cursor = db.rawQuery("SELECT * FROM Bank where "+tb_name+ " like '%"+query+"%' Order by " + tb_name + " ASC ;", null);
cursor = db.rawQuery("SELECT * FROM Bank ORDER BY LENGTH("+tb_name+") ASC ;", null);
if (cursor != null) { cursor.moveToFirst(); do {
String indo; String karo; if (state == 1) {
indo = cursor.getString(1); karo = cursor.getString(2); } else {
indo = cursor.getString(2); karo = cursor.getString(1); }
startTime = System.currentTimeMillis();
RC_start(query.toLowerCase(), indo.toLowerCase(), karo.toLowerCase());
/*Result r = new Result(); r.setIndo(indo);
r.setKaro(karo); r.setPat(query); r.setPos(0); resultList.add(r); jumlahTotal++; */
finisTime = System.currentTimeMillis();
totalTime = totalTime + (finisTime-startTime);
} while (cursor.moveToNext()); }
db.close();
adapter = new
CustomListAdapter(UtamaActivity.this, resultList); listView.setAdapter(adapter); } catch (Exception e) {
}
//totalTime = finisTime - startTime;
DialogInfo("Waktu = " + totalTime + " ms\nBanyak Komparasi = " + comp +
"\nYang didapat = " + jumlahTotal); return true; }
};
searchView.setOnQueryTextListener(queryTextListener); }
return true; }
@Override
public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {
case R.id.action_search: return false;
case R.id.action_putar: if (state == 1) { state = 2;
getSupportActionBar().setTitle("KARO-INDONESIA"); } else {
state = 1;
getSupportActionBar().setTitle("INDONESIA-KARO"); }
;
return false; default:
break; }
searchView.setOnQueryTextListener(queryTextListener); return super.onOptionsItemSelected(item);
}
public void DialogInfo(String m) {
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Hasil Pencarian dari kata \"" + yangdicari +
"\"");
builder.setMessage(m);
DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) { dialog.dismiss();
} });
builder.show();
//super.onBackPressed(); }
@SuppressWarnings("StatementWithEmptyBody") @Override
public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_bantuan) {
Intent inn = new Intent(UtamaActivity.this, BantuanActivity.class); startActivity(inn);
}
else if (id == R.id.nav_info) {
Intent inf = new Intent(UtamaActivity.this, InformasiActivity.class); startActivity(inf);
}
else if (id == R.id.nav_perpus) {
Intent i = new Intent(UtamaActivity.this, PerpustakaanActivity.class); startActivity(i);
}
else if (id == R.id.nav_saya) {
Intent in = new Intent(UtamaActivity.this, activity_tentang.class); startActivity(in);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START);
return true; }
String txt; String pat; String karo; char[] x; char[] y; int n; int m;
int[][] rcBc = new int[256][256]; int[] rcGs = new int[256];
int[] h = new int[256]; int[] locc = new int[256]; int[] link = new int[256]; int[] hmin = new int[256]; int[] kmin = new int[256]; int[] rmin = new int[256];
public void RC_start(String getPat, String indo, String getKaro) { txt = indo;
pat = getPat; karo = getKaro;
y = txt.toCharArray(); n = txt.length(); m = pat.length(); RC();
}
public void preRc() {
/* Computation of link and locc */
for (int a = 0; a < 256; ++a) locc[a] = -1;
link[0] = -1;
for (int i = 0; i < m - 1; ++i) { link[i + 1] = locc[x[i]]; locc[x[i]] = i;
}
/* Computation of rcBc */
int i, j;
for (int a = 0; a < 256; ++a) for (int s = 1; s <= m; ++s) { i = locc[a];
j = link[m - s];
while (i - j != s && j >= 0) if (i - j > s)
i = link[i + 1]; else
j = link[j + 1]; while (i - j > s)
i = link[i + 1]; rcBc[a][s] = m - i - 1; }
/* Computation of hmin */ int k = 1;
int q; i = m - 1; while (k <= m) {
while (i - k >= 0 && x[i - k] == x[i]) --i;
hmin[k] = i; q = k + 1;
while (hmin[q - k] - (q - k) > i) { hmin[q] = hmin[q - k];
++q; }
i += (q - k); k = q;
if (i == m) i = m - 1; }
/* Computation of kmin */ for (int a = 0; a < 256; ++a) kmin[a] = 0;
/* Computation of rmin */ int r = 0;
for (i = m - 1; i >= 0; --i) { if (hmin[i + 1] == i) r = i + 1;
rmin[i] = r; }
/* Computation of rcGs */ i = 1;
for (k = 1; k <= m; ++k)
if (hmin[k] != m - 1 && kmin[hmin[k]] == k) { h[i] = hmin[k];
rcGs[i++] = k; }
i = m - 1;
for (j = m - 2; j >= 0; --j) if (kmin[j] == 0) { h[i] = j;
rcGs[i--] = rmin[j]; }
rcGs[m] = rmin[0];
}
public void RC() { /* Preprocessing */
try {
preRc();
} catch (Exception e) {
//Log.d("IYU:", "recok kali pun PRERC"); }
/* Searching */ int i;
int j = 0; int s = m;
boolean error = false; while (j <= n - m) { error = false; try {
while (j <= n - m && (comp++ >= 0) && x[m - 1] != y[j + m - 1]) { s = rcBc[y[j + m - 1]][s];
j += s; }
} catch (Exception e) {
//Log.d("IYU:", "recok kali pun WHILE 1"); }
i = 1; try {
for (i = 1; i < m && (comp++ >= 0) && x[h[i]] == y[j +
h[i]]; ++i) ;
} catch (Exception e) { error = true; }
if (!error) {
Result r = new Result(); r.setIndo(txt);
r.setKaro(karo); r.setPat(pat); r.setPos(j); resultList.add(r); jumlahTotal++; }
} }
s = rcGs[i]; j += s; }
}
}
/*** Result***/
public class Result { String mInd, mKaro; int pos;
String pat;
public Result() { }
public Result(String mInd, String mKaro, int mPos, String mPat) { this.mInd = mInd;
this.mKaro = mKaro; this.pos = mPos; this.pat = mPat; }
public String getIndo() { return mInd;
}
public void setIndo(String mIndo) { this.mInd = mIndo;
}
public String getKaro() { return mKaro;
}
public void setKaro(String mKaro) { this.mKaro = mKaro;
}
public int getPos() { return pos; }
public void setPos(int mPos) { this.pos = mPos;
}
public String getPat() { return pat;
}
this.pat = mPat; }
/*** CustomListAdapter***/
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
String first, middle, last; try {
if (inflater == null)
inflater = (LayoutInflater)
activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null)
convertView = inflater.inflate(R.layout.list_item, null); TextView indo = (TextView)
convertView.findViewById(R.id.tv_indo); TextView karo = (TextView) convertView.findViewById(R.id.tv_karo);
// getting movie data for the row Result m = resultItems.get(position);
int pos = m.getPos();
int pLength = m.getPat().length(); String h = m.getIndo();
//Log.d("IYU:", "lokasi "+position+" isi: "+h); first = h.substring(0, pos);
//Log.d("IYU:", "first : "+first);
middle = h.substring(pos, pos + pLength); //Log.d("IYU:", "midle :"+middle);
last = h.substring(pLength + pos); //Log.d("IYU:", "last :"+last);
if (pLength == 0) indo.setText(h); else
indo.setText(Html.fromHtml(first + "<font color='#FF4081'><b>" + middle + "</b></font>" + last)); karo.setText(m.getKaro());
//Log.d("IYU:", "SUKSES"); } catch (Exception e) {
//Log.e("IYU:", "Fatal Error update list"); }
return convertView; }
}
/*** CustomListAdapterPerpustakaan***/
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
try {
if (inflater == null)
inflater = (LayoutInflater)
activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null)
String s;
Result m = resultItems.get(position); s = m.getIndo().substring(0,1); indo.setText(m.getIndo()); karo.setText(m.getKaro()); huruf.setText(s.toUpperCase());
} catch (Exception e) {
Log.e("ERROR:", "Fatal Error update list"); }
return convertView; }
}
/*** DatabaseOpenHelper***/
public class DatabaseOpenHelper extends SQLiteAssetHelper{ private static final String DATABASE_NAME = "KamusKaro.db"; private static final int DATABASE_VERSION = 2;
public DatabaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null , DATABASE_VERSION); }
}
/*** PerpustakaanActivity***/
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_perpustakaan); if (getSupportActionBar() != null){
getSupportActionBar().setTitle("Perpustakaan");
getSupportActionBar().setDisplayHomeAsUpEnabled(true); }
//new StartView().execute();
listView = (ListView) findViewById(R.id.list);
adapter = new
CustomListAdapterPerpustakaan(PerpustakaanActivity.this, resultList); listView.setAdapter(adapter);
Read_Data(); }
@Override
public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId();
if (id == android.R.id.home) { this.finish();
return true; }
return super.onOptionsItemSelected(item); }
private void Read_Data() {
helper = new DatabaseOpenHelper(this); cursor = null;
String h = "Indonesia\n"; String h1 = "Karo\n";
//TextView tv = (TextView) findViewById(R.id.textView); //TextView tv1 = (TextView) findViewById(R.id.textView1);
db = helper.getReadableDatabase();
cursor = db.rawQuery("SELECT * FROM Bank ORDER BY Indonesia ASC;", null);
if (cursor != null) { cursor.moveToFirst(); do {
Result r = new Result();
r.setIndo(cursor.getString(1)); r.setKaro(cursor.getString(2)); resultList.add(r);
} while (cursor.moveToNext()); }
db.close(); adapter = new
CustomListAdapterPerpustakaan(PerpustakaanActivity.this, resultList); listView.setAdapter(adapter);
}
private class StartView extends AsyncTask<Void, Void, Void> { @Override
protected void onPreExecute() { super.onPreExecute();
pDialog = new ProgressDialog(PerpustakaanActivity.this); pDialog.setMessage("Tunggu");
pDialog.setCancelable(false); pDialog.show();
pDialog.setProgress(0);
}
@Override
protected Void doInBackground(Void... arg0) { Read_Data();
return null; }
@Override
protected void onPostExecute(Void result) { if (pDialog.isShowing())
pDialog.dismiss();
}
} }
/*** SplashActivity***/
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash); getSupportActionBar().hide();
setSplash(); }
public void setSplash() { new Thread() {
@Override
try {
Thread.sleep(1500); }
catch (Exception e) { }
Intent i = new Intent(SplashActivity.this, UtamaActivity.class);
SplashActivity.this.finish(); startActivity(i);
} }.start(); }
}
/*** Activity_Tentang***/
public class activity_tentang extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_tentang); getSupportActionBar().setTitle("Tentang Saya");
getSupportActionBar().setDisplayHomeAsUpEnabled(true); }
@Override
public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId();
if (id == android.R.id.home) { this.finish();
return true; }
return super.onOptionsItemSelected(item); }
}
/*** AndroidManifest.xml***/
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yogisulaiman.myapplication2">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:label="Kamus Indonesia-Karo" android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" /> <activity android:name=".SplashActivity"> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter> </activity>
<activity
android:name=".UtamaActivity" android:label="INDONESIA-KARO"
android:theme="@style/AppTheme.NoActionBar"> </activity>
</application> </manifest>
/*** Activity_Informasi.xml***/
<RelativeLayoutxmlns: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:background="@drawable/ji"
tools:context="com.yogisulaiman.myapplication2.InformasiActivity">
</RelativeLayout>
/*** List_Item.xml***/
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="wrap_content" android:background="#ffffff"
android:orientation="vertical" android:padding="5dp">
<TextView
android:id="@+id/tv_indo"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Indonesia"
android:textColor="#000000" android:textSize="20sp" /> <TextView
android:id="@+id/tv_karo"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Karo"
android:textColor="#000000" android:textSize="28sp" /> </LinearLayout>
/*** List_Item_Perpustakaan.xml***/
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="wrap_content" android:background="#ffffff"
android:orientation="horizontal" android:padding="5dp">
<RelativeLayout
<ImageView
android:layout_width="60dp" android:layout_height="60dp" android:layout_marginRight="20dp" android:layout_marginLeft="10dp"
android:src="@drawable/ic_brightness_1_24dp" /> <TextView
android:id="@+id/tv_huruf"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A"
android:textColor="#FFFFFF" android:textSize="40sp"
android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> </RelativeLayout>
<LinearLayout
android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView
android:id="@+id/tv_indo"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Indonesia"
android:textColor="#000000" android:textSize="20sp" /> <TextView
android:id="@+id/tv_karo"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Karo"
android:textColor="#000000" android:textSize="28sp" /> </LinearLayout>
</LinearLayout>
/*** Nav_Header_Utama.xml***/
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@color/colorPrimary" android:gravity="bottom"
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" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <ImageView
android:id="@+id/imageView" android:layout_width="100dp" android:layout_gravity="center" android:layout_height="100dp"
<TextView
android:layout_width="match_parent" android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing" android:text="Kamus"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> <TextView
android:id="@+id/textView"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="INDONESIA-KARO" /> </LinearLayout>
/*** Activity_Utama_drawer.xml***/
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single">
<item
android:id="@+id/nav_bantuan" android:icon="@drawable/bantuan" android:title="Bantuan" /> <item
android:id="@+id/nav_info" android:icon="@drawable/info" android:title="Suku Karo" /> <item
android:id="@+id/nav_perpus" android:icon="@drawable/per" android:title="Perpustakaan" /> <item
android:id="@+id/nav_saya" android:icon="@drawable/me" android:title="Tentang Saya" /> </group>
</menu>
/*** Main_Menu.xml***/
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search" android:title="Cari..."
app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="always" />
<item
android:id="@+id/action_putar"
android:icon="@android:drawable/stat_notify_sync_noanim" android:title="Putar"
app:showAsAction="always" /> </menu