Implementasi Algoritma Apostolico-Crochemore Pada Aplikasi Kumpulan Hadits Shahih Berbasis Android

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
ArrayAdapter adapter;
// List untuk dbhadits
List dbhadits;
//ALGORITMA APOSTOLICO-CROCHEMORE
static int xsize = 256;
static int[] kmpNext = new int[xsize];
//menghitung fungsi pinggiran pada pattern
public static void preKmp(String x, int m){
int i,j;
i = 0;
j = kmpNext[0] = -1;
while(i < m){
while(j > -1 && x.charAt(i) != x.charAt(j)){
j = kmpNext[j];

}
i++;
j++;
char xi = 0;
char xj = 0;
if(i= ell)
return j;
}
j += (i - kmpNext[i]);
if(i == ell){
k = Math.max(0, k-1);
}
else{
if(kmpNext[i]