• Uncategorized
  • 0

10.1B: Searching a SQLite Database

Task 0. Download and run the base code

Untuk menghemat pekerjaan, praktik ini akan membangun aplikasi yang sudah Anda buat. 
Dalam project, membangun kode aplikasi yang ada adalah tugas pengembang umum untuk menambahkan fitur atau memperbaiki masalah.
1. extract aplikasi WordListSQL finished 
2. kemudian run


  
  

1.1. Add an Options Menu with Search item

Dalam proyek Anda, buat direktori Sumber Daya Android dan namakan menu dengan "menu" sebagai jenis sumber daya  (res > menu).

Tambahkan file sumber daya menu main_menu.xml untuk res> menu.

Buat menu dengan satu pencarian item. Mereferensikan cuplikan kode untuk nilai.

<menu
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app = "http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   tools:context="com.android.example.wordlistsqlsearchable.MainActivity">

   <item
       android:id="@+id/action_search"
       android:title="Search..."
       android:orderInCategory="1"
       app:showAsAction="never" />
</menu>
Di MainAcvitiy, tingkatkan menu dengan mengesampingkan onCreateOptionsMenu.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
   getMenuInflater().inflate(R.menu.menu_main, menu);
   return true;
}
Timpa metode OnOptionsItemSelected. Beralih action_search, dan kembali saja.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {
       case R.id.action_search:
           return true;
   }
   return super.onOptionsItemSelected(item);
}
Jalankan aplikasi Anda. Anda harus melihat titik-titik untuk menu opsi. 
Ketika Anda mengkliknya, Anda akan melihat satu item menu untuk pencarian yang tidak melakukan apa-apa.
  

1.2. Create the layout for the search activity

Tata letak ini mirip dengan activity_edit_word, jadi Anda dapat memanfaatkan kode yang ada dan menyalinnya.
Buat salinan activity_editword dan beri nama activity_search.xml.
Dalam activity_search.xml, ubah id dan string untuk mewakili pencarian.

Ubah metode onClick untuk tombol untuk menampilkanResult.

Tambahkan TextView dengan id search_result, setidaknya 300dp tinggi, dan ukuran font 18sp.

Jalankan aplikasi Anda. Anda harus memperhatikan tidak ada perbedaan.
 

1.3. Add an Activity for searching

Buat aktivitas baru, SearchActivity. Jika Anda membuatnya dengan New> Android> Activity maka JANGAN menghasilkan file layout karena kami membuatnya di tugas sebelumnya.
Tambahkan variabel kelas TextView pribadi mTextView.

Tambahkan variabel kelas EditText pribadi mEditWordView.

Tambahkan variabel mDB WordListOpenHelper pribadi.

Di onCreate, menginisialisasi mDB dengan WordListOpenHelper baru (ini).

Di onCreate, inisialisasi mTextView dan mEditWordView ke tampilan masing-masing.
public class SearchActivity extends AppCompatActivity {

   private static final String TAG = EditWordActivity.class.getSimpleName();

   private TextView mTextView;
   private EditText mEditWordView;
   private WordListOpenHelper mDB;

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

       mEditWordView = ((EditText) findViewById(R.id.search_word));
       mTextView = ((TextView) findViewById(R.id.search_result));
       mDB = new WordListOpenHelper(this);
   }
}
Tambahkan aktivitas ke AndroidManifest.
<activity
    android:name="com.android.example.wordlistsqlsearchable.SearchActivity">
</activity>
  

1.4. Trigger SearchActivity from the menu

Untuk memulai SearchActivity saat item menu dipilih, masukkan kode untuk memulai SearchActivity ke dalam pernyataan switch pada metode onOptionSelected () di MainActivity.

Intent intent = new Intent(getBaseContext(), SearchActivity.class);
startActivity(intent);
Bangun dan jalankan aplikasi Anda untuk memastikan SearchActivity diluncurkan ketika item menu "Search" dipilih dari OptionsMenu.
Masukkan string pencarian dan tekan "Cari". Aplikasi Anda mogok.
Cari tahu mengapa aplikasi macet, lalu pindah ke tugas berikutnya.

1.5. Implement the onClick handler for the Search button in the SearchActivity

Aplikasi Anda gagal, karena handler onClick yang ditetapkan untuk tombol Cari dalam kode XML belum ada. Jadi Anda akan membangun showResult berikutnya.
Ketika tombol Search ditekan, beberapa hal perlu terjadi:
Event handler menyebut public void showResult (Tampilan tampilan) di SearchActivity.
Aplikasi Anda harus mendapatkan nilai saat ini dari mEditWordView, yang merupakan string pencarian Anda.
Anda mencetak "Hasil untuk" dan kata di mTextView.
Anda memanggil fungsi pencarian (belum ditulis) pada mDB (mDB.search (kata) dan mendapatkan kembali kursor database SQLite Anda akan mengimplementasikan fungsi pencarian dalam tugas berikutnya.
Anda memproses kursor dan menambahkan hasilnya ke mTextView.
Di SearchActivity, buat fungsi showResult. Ini bersifat publik, mengambil argumen Tampilan, dan tidak menghasilkan apa-apa.
Buat kata yang disebut Stringvariable dan inisialisasi dengan isi tampilan teks edit masukan, mEditWordView.
Tampilkan istilah pencarian dalam hasil pencarian TextView; sesuatu seperti
"Search term: " + word
Cari database dan dapatkan kursor.
Cursor cursor = mDB.search(word);
Untuk memproses kursor, Anda perlu melakukan hal berikut:
Pastikan kursor tidak nol.
Pindahkan kursor ke entri pertama.
Iterate atas kursor memproses entri saat ini, kemudian memajukan kursor.
Ekstrak kata.
Tampilkan kata dalam tampilan teks.
Tutup kursor.

Jika tidak ada hasil yang ditemukan, pengguna melihat layar kosong tanpa hasil. 
Anda ingin ini ditangani dalam aplikasi produksi.

Periksa kode beranotasi untuk detail tambahan.
public void showResult(View view){
        String word = mEditWordView.getText().toString();
        mTextView.setText("Result for " + word + ":\n\n");

        // Search for the word in the database.
        Cursor cursor = mDB.search(word);

        // Only process a non-null cursor with rows.
        if (cursor != null & cursor.getCount() > 0) {
            // You must move the cursor to the first item.
            cursor.moveToFirst();
            int index;
            String result;
            // Iterate over the cursor, while there are entries.
            do {
                // Don't guess at the column index.
                // Get the index for the named column.
                index = cursor.getColumnIndex(WordListOpenHelper.KEY_WORD);
                // Get the value from the column for the current cursor.
                result = cursor.getString(index);
                // Add result to what's already in the text view.
                mTextView.append(result + "\n");
            } while (cursor.moveToNext()); // Returns true or false
            cursor.close();
        } // You should add some handling of null case. Right now, nothing happens.
    }
Aplikasi Anda tidak akan berjalan tanpa setidaknya sebuah rintisan untuk pencarian () diimplementasikan.
Android Studio akan membuat stub untuk Anda. Di bola lampu, pilih buat metode.
Buka WordListOpenHelper.

Menerapkan rintisan untuk pencarian, dengan parameter String, yang mengembalikan kursor null.

Jalankan aplikasi Anda dan perbaiki kesalahan yang mungkin Anda miliki. Perhatikan bahwa sebagian besar kode di showResult () belum digunakan.
 

1.6. Implement the search method in WordListOpenHelper

Untuk kueri dalam metode pencarian (), Anda harus menetapkan hanya empat argumen pertama.

Tabel sudah didefinisikan sebagai konstanta WORD_LIST_TABLE.
Dalam pencarian (), buat variabel untuk kolom. Anda hanya membutuhkan nilai dari kolom KEY_WORD.
String[] columns = new String[]{KEY_WORD};
Tambahkan% ke parameter searchString.
searchString = "%" + searchString + "%";
Buat klausa di mana. Hilangkan "WHERE" yang tersirat. Gunakan tanda tanya untuk argumen LIKE. Pastikan Anda memiliki jarak yang benar.
String where = KEY_WORD + " LIKE ?"; Tentukan argumen ke mana klausa, yang merupakan pencarian string.
String[] whereArgs = new String[]{searchString}; Tambahkan variabel kursor kursor dan menginisialisasi ke nol.
Di blok coba / tangkap.
Dapatkan database yang mudah dibaca jika mReadable belum disetel.
Permintaan database menggunakan bentuk kueri di atas. Lulus nol untuk parameter yang tidak digunakan.
Tangani pengecualian. Anda tinggal login saja.
Kembalikan kursor.

Jalankan aplikasi Anda dan cari beberapa string.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *