LISTING PROGRAM
1. MainActivity.java
package com.skripsi.zahra.haditsshahih; import android.content.Context;
import android.content.Intent; import android.os.Bundle;
import android.support.v4.view.MenuItemCompat; import android.support.v7.app.ActionBar;
import android.support.v7.widget.SearchView; import android.view.KeyEvent;
import android.view.View; import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar; import android.view.Menu;
import android.view.MenuItem; import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.EditText;
import android.widget.ListAdapter; import android.widget.ListView;
import android.widget.SimpleAdapter; import android.widget.TextView;
import android.widget.Toast; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONObject;
import java.util.ArrayList; import java.util.HashMap;
import java.util.List;
Universitas Sumatera Utara
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private boolean isSearchOpened = false; private EditText edPencarian;
private MenuItem mSearchAction; List view
private ListView lv; Listview Adapter
ArrayAdapterString adapter; List untuk dbhadits
ListString dbhadits; ALGORITMA APOSTOLICO-CROCHEMORE
static int xsize = 256; static int[] kmpNext = new int[xsize];
menghitung fungsi pinggiran pada pattern public static void preKmpString x, int m{
int i,j; i = 0;
j = kmpNext[0] = -1; whilei m{
whilej -1 x.charAti = x.charAtj{ j = kmpNext[j];
} i++;
j++; char xi = 0;
char xj = 0; ifim
xi = x.charAti; xj = x.charAtj;
ifxi == xj{ kmpNext[i] = kmpNext[j];
}
Universitas Sumatera Utara
else{ kmpNext[i] = j;
}}} public static int AXAMACString x, int m, String y, int n{
Preprocessing int ell, i, j, k;
preKmpx, m; ell = 1;
try{ forell = 1; x.charAtell - 1 == x.charAtell; ell++{
}}catchException e{} ifell == m{
ell = 0; }
Searching i = ell;
j = k = 0; whilej = n - m{
whilei m x.charAti == y.charAti+j{ ++i;
} ifi = m{
whilek ell x.charAtk == y.charAtj + k{ ++k;
} ifk = ell
return j; }
j += i - kmpNext[i]; ifi == ell{
k = Math.max0, k-1; }
else{ ifkmpNext[i] = ell{
k = Math.max0, kmpNext[i]; i = ell;
Universitas Sumatera Utara
} else{
k = ell; i = kmpNext[i];
}}} return -1;
} AKHIR DARI ALGORITMA APOSTOLICO-CROCHEMORE
Override protected void onCreateBundle savedInstanceState {
super.onCreatesavedInstanceState; setContentViewR.layout.activity_main;
PENGAMBILAN DATABASES DatabaseAccess databaseAccess =
DatabaseAccess.getInstancethis; databaseAccess.open;
dbhadits = databaseAccess.getData; databaseAccess.close;
PENAMBAHAN list dbhadits ke dalam ListView lv lv = ListView findViewByIdR.id.list_view;
adapter = new ArrayAdapterStringthis, R.layout.content_main, R.id.label, dbhadits;
lv.setAdapteradapter; Toolbar toolbar = Toolbar findViewByIdR.id.toolbar;
setSupportActionBartoolbar; DrawerLayout drawer = DrawerLayout
findViewByIdR.id.drawer_layout; ActionBarDrawerToggle toggle = new ActionBarDrawerToggle
this, drawer, toolbar, R.string.navigation_drawer_open,
R.string.navigation_drawer_close; drawer.setDrawerListenertoggle;
toggle.syncState; NavigationView navigationView = NavigationView
Universitas Sumatera Utara
findViewByIdR.id.nav_view; navigationView.setNavigationItemSelectedListenerthis;
} protected void handleMenuSearch{
ActionBar action = getSupportActionBar; ifisSearchOpened{
action.setDisplayShowCustomEnabledfalse; action.setDisplayShowTitleEnabledtrue;
InputMethodManager imm = InputMethodManager getSystemServiceContext.INPUT_METHOD_SERVICE;
imm.hideSoftInputFromWindowedPencarian.getWindowToken, 0;
mSearchAction.setIconR.drawable.search_black; isSearchOpened = false;
} else { action.setDisplayShowCustomEnabledtrue;
action.setCustomViewR.layout.activity_search; untuk menyembunyikan judul
action.setDisplayShowTitleEnabledfalse; text editor
edPencarian = EditTextaction.getCustomView.findViewByIdR.id.idCari;
edPencarian.setVisibilityView.VISIBLE; saat user klik tombol cari
edPencarian.setOnEditorActionListenernew TextView.OnEditorActionListener {
Override public boolean onEditorActionTextView v, int
actionId, KeyEvent event { if actionId == EditorInfo.IME_ACTION_SEARCH{
Universitas Sumatera Utara
MASUK KE PROSES PENCARIAN String pattern =
edPencarian.getText.toString; ArrayList saveResult = new ArrayList;
PENYERATAAN HURUF String ptn = pattern.toLowerCase;
String txt[] = new String[dbhadits.size]; forint i=0;idbhadits.size;i++{
txt[i] = dbhadits.geti.toLowerCase; }
PENYIMPANAN HASIL PENCARIAN int jumlah_hasil=0;
int result; forint i=0;idbhadits.size;i++ {
result = AXAMACptn, ptn.length, txt[i], txt[i].length;
if result = -1 { jumlah_hasil++;
saveResult.adddbhadits.geti; }}
MENAMPILKAN HASIL PENCARIAN DARI DATABASE adapter = new ArrayAdaptergetBaseContext,
R.layout.content_main, R.id.label, saveResult; lv.setAdapteradapter;
MENAMPILKAN JUMLAH HADITS YANG BERHASIL DITEMUKAN SISTEM String jml = Integer.toStringjumlah_hasil;
Toast.makeTextgetBaseContext, Hadits yang ditemukan sebanyak +jml+ hadits, Toast.LENGTH_LONG.show;
return true;} return false;}
}; edPencarian.requestFocus;
perintah membuka keyboard InputMethodManager imm = InputMethodManager
getSystemServiceContext.INPUT_METHOD_SERVICE;
Universitas Sumatera Utara
imm.showSoftInputedPencarian, InputMethodManager.SHOW_IMPLICIT; mSearchAction.setIconR.drawable.search_color;
isSearchOpened = true; }}
Override public boolean onPrepareOptionsMenuMenu menu {
mSearchAction = menu.findItemR.id.action_search; SearchView searchView = SearchView
MenuItemCompat.getActionViewmenu.findItemR.id.action_search; return super.onPrepareOptionsMenumenu;
} Override
public void onBackPressed { DrawerLayout drawer = DrawerLayout
findViewByIdR.id.drawer_layout; if drawer.isDrawerOpenGravityCompat.START {
drawer.closeDrawerGravityCompat.START; } else ifisSearchOpened {
handleMenuSearch; return;
}else { super.onBackPressed;
}} Override
public boolean onCreateOptionsMenuMenu menu { Inflate the menu; this adds items to the action bar if it
is present. getMenuInflater.inflateR.menu.main, menu;
return true; }
Override public boolean onOptionsItemSelectedMenuItem item {
Menu Toolbar int id = item.getItemId;
switch id {
Universitas Sumatera Utara
case R.id.action_search: handleMenuSearch;
return true; }
return super.onOptionsItemSelecteditem; }
SuppressWarningsStatementWithEmptyBody Override
public boolean onNavigationItemSelectedMenuItem item { int id = item.getItemId;
if id == R.id.nav_help { Menampilkan Petunjuk Penggunaan
Intent about = new IntentMainActivity.this,HelpActivity.class;
startActivityabout; } else if id == R.id.nav_about {
Menampilkan About Intent about = new
IntentMainActivity.this,AboutActivity.class; startActivityabout;
} else if id == R.id.nav_allhadits { Menampilkan Semua Hadits
adapter = new ArrayAdaptergetBaseContext, R.layout.content_main, R.id.label, dbhadits;
lv.setAdapteradapter; Toast.makeTextthis, Kembali menampilkan semua hadits,
Toast.LENGTH_LONG.show; }
DrawerLayout drawer = DrawerLayout findViewByIdR.id.drawer_layout;
drawer.closeDrawerGravityCompat.START; return true;
} }
Universitas Sumatera Utara
2. DatabaseOpenHelper.java