Помощь с кодом для выделения результата поиска в виде списка
кто-нибудь может помочь мне изменить этот код, чтобы я мог получить выделенный результат поиска в ListView. Я все еще новичок в этом деле, поэтому больше не знаю, как это сделать. результат поиска уже отображается, но мне нужно сделать так, чтобы он выделял определенный символ или слово.
кто-нибудь может мне помочь, пожалуйста, я действительно застрял.
и я все еще использую Eclipse IDE, потому что на самом деле это мой старый проект, который я сделал до того, как google изменил официальную IDE для android на Android Studio. и с тех пор этот проект так и не был завершен.
Что я уже пробовал:
package com.artstudio.testhighlight; import java.util.Locale; import com.artstudio.testhighlight.DatabaseSong; import android.os.Bundle; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.app.Activity; import android.graphics.Color; import android.graphics.Typeface; import android.content.Context; import android.content.res.ColorStateList; import android.text.Editable; import android.text.Spannable; import android.text.SpannableString; import android.text.TextWatcher; import android.text.style.TextAppearanceSpan; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class MainActivity extends Activity implements OnItemClickListener, TextWatcher { private ListView daftarLagu; private String[] tampungLaguLirik = null; protected static String strSearchLyric = null; // Test Highlight private String mSearchText; //deklarasi keperluan untuk database private SQLiteDatabase db = null; private Cursor LaguCursor = null; private DatabaseSong datalagu = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); datalagu = new DatabaseSong(this); db = datalagu.openDataBase(); db = datalagu.getReadableDatabase(); datalagu.onCreate(db); //buat object dari dataLagu setContentView(R.layout.activity_search); daftarLagu = (ListView)findViewById(R.id.listIndexLagu); //buat listener dari list view pada aplikasi pencarian tanaman obat daftarLagu.setOnItemClickListener(this); //Tombol Ganti Jenis Pencarian TextView text = (TextView) findViewById(R.id.pencarian); text.setText("PENCARIAN LIRIK LAGU"); Button nomorBtn = (Button) findViewById(R.id.btnSwitchPencarian); nomorBtn.setText("CARI NOMOR, JUDUL, PENGARANG"); nomorBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); db.close(); //startActivity(new Intent(MainActivity.this, SearchActivity.class)); } }); //Tombol Cari Lagu EditText textCari = (EditText)findViewById(R.id.editTextcari); textCari.setHint("Masukan Potongan Lirik Lagu"); textCari.addTextChangedListener(this); } //buat overread method dari set on item click listener public void onItemClick(AdapterView<?> arg0, View arg1, int posisi, long arg3) { Toast.makeText(MainActivity.this, "ini pas saya click", Toast.LENGTH_SHORT).show(); //Toast.makeText(SearchLyricActivity.this, ""+tampungLaguLirik[posisi], Toast.LENGTH_SHORT).show(); //panggil method yang dibuat untuk handler tampilkan gambar dari data tanaman cariTampilView(""+tampungLaguLirik[posisi]); posisi = 0; } //fungsi public void cariTampilView(String cari){ LaguCursor = null; //memilih lagu dari daftar LaguCursor = db.rawQuery("SELECT lirik, nomor||'. '||judul " + "FROM tbl_Lagusion WHERE (UPPER('\n\n___ '||nomor||'. '||judul)||'\n\n'||lirik) = '"+ cari +"' ", null); if (LaguCursor.moveToFirst()) { strSearchLyric = null; strSearchLyric = LaguCursor.getString(0); Toast.makeText(MainActivity.this, LaguCursor.getString(1).toString(), Toast.LENGTH_SHORT).show(); //for (; !LaguCursor.isAfterLast(); LaguCursor.moveToNext()) { // strSearchLyric = LaguCursor.getString(0); // } } if (strSearchLyric.equals("")) { strSearchLyric = "Terjemahan Not Found"; Toast.makeText(MainActivity.this, "Pencarian tidak ditemukan........!", Toast.LENGTH_SHORT).show(); }else{ //hasil yang didapat dan di tampilkan ke frame_view Toast.makeText(MainActivity.this, "Sadisssssss\n"+LaguCursor.getString(0).toString(), Toast.LENGTH_SHORT).show(); //Intent x = new Intent(MainActivity.this, LyricViewer.class); //startActivity(x); } } void tampilLagu(){ strSearchLyric = null; EditText text=(EditText)findViewById(R.id.editTextcari); text.setTextColor(Color.parseColor("#0066FF")); String value = text.getText().toString(); int length = text.length(); value = value.trim(); value = value.replaceAll("'","’"); //value = value.replaceAll(",",""); if (length == 0){ value = null; } int Hitung =0; //Untuk menampilkan daftar lagu pada Index Lagu LaguCursor = db.rawQuery("SELECT (UPPER('\n\n___ '||nomor||'. '||judul)||'\n\n'||lirik) FROM tbl_Lagusion WHERE lirik LIKE '%"+value+"%' ", null); tampungLaguLirik = new String[LaguCursor.getCount()]; LaguCursor.moveToFirst(); Toast.makeText(MainActivity.this, "klot "+LaguCursor.getCount(), Toast.LENGTH_SHORT).show(); for (int cc=0; cc < LaguCursor.getCount(); cc++) { Hitung = Hitung +1; LaguCursor.moveToPosition(cc); tampungLaguLirik[cc] = LaguCursor.getString(0).toString(); } if(Hitung == 0){ daftarLagu = (ListView)findViewById(R.id.listIndexLagu); daftarLagu.setFastScrollEnabled(true); daftarLagu.setBackgroundColor(Color.TRANSPARENT); daftarLagu.setAnimationCacheEnabled(true); daftarLagu.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, tampungLaguLirik)); daftarLagu.setSelected(true); //daftarLagu..setTypeface(null, Typeface.BOLD); //pesanPengguna("Lagu Tidak Ditemukan!"); }else{ daftarLagu = (ListView)findViewById(R.id.listIndexLagu); daftarLagu.setFastScrollEnabled(true); daftarLagu.setBackgroundColor(Color.TRANSPARENT); daftarLagu.setAnimationCacheEnabled(true); daftarLagu.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, tampungLaguLirik)); daftarLagu.setSelected(true); } } private String getItem(int position) { // TODO Auto-generated method stub return null; } public void onBackPressed() { strSearchLyric = null; db.close(); finish();//memanggil method exit() } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub tampilLagu(); } @Override public boolean dispatchTouchEvent(MotionEvent event) { View v = getCurrentFocus(); boolean ret = super.dispatchTouchEvent(event); if (v instanceof EditText) { View w = getCurrentFocus(); int scrcoords[] = new int[2]; w.getLocationOnScreen(scrcoords); float x = event.getRawX() + w.getLeft() - scrcoords[0]; float y = event.getRawY() + w.getTop() - scrcoords[1]; // Toast.makeText(MainActivity.this, "klot", Toast.LENGTH_SHORT).show(); // Log.d("Activity", "Touch event "+event.getRawX()+","+event.getRawY()+" "+x+","+y+" rect "+w.getLeft()+","+w.getTop()+","+w.getRight()+","+w.getBottom()+" coords "+scrcoords[0]+","+scrcoords[1]); if (event.getAction() == MotionEvent.ACTION_UP && (x < w.getLeft() || x >= w.getRight() || y < w.getTop() || y > w.getBottom()) ) { // Toast.makeText(MainActivity.this, "klot klot", Toast.LENGTH_SHORT).show(); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0); } } return ret; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } }
David Crow
Задумывались ли вы о том, чтобы задать такой вопрос на самом форуме Android здесь, в CP? Этот раздел действительно предназначен для быстрых / коротких ответов.
Richard MacCutchan
Невозможно угадать, где ваша проблема во всем этом коде.