توسط
snowman
سلام
یه برنامه کتاب الکترونیکی نوشتم که همه چیش درست کار میکنه فقط تو قسمت جستجوش گیر کردم. تو برنامه از sqlite برای دیتابیس استفاده کردم که شامل یه table هست .برنامه 4 قسمت داره که واسه هر قسمت یه اکتیویتی ساختم که با استفاده از لیست ویو اطلاعاتو نشون میده . تو قسمت جستجو نمیتونم آیتم رو به اکتیویتی مورد نظر پاس بدم .نمیدونم اصلا امکانش هست یا نه راستش این اولین برنامم هستش ممنون میشم راهنماییم کنیید.
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.util.HashMap;
import java.util.List;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
public class search extends AppCompatActivity
{
private DatabaseHandler db;
private ListView resultListView;
private List<HashMap<String , Object>> resultBooks;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
resultListView = (ListView) findViewById(R.id.resultListView);
db = new DatabaseHandler( getBaseContext() );
db.open();
if( db.getScreenState() == 1 ) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
db.close();
}
public void onBtnFindClick( View v )
{
resultListView.setAdapter(null);
RadioGroup rGroup = (RadioGroup) findViewById(R.id.rgItems);
int selected_item_id = rGroup.getCheckedRadioButtonId();
RadioButton rbTitle = (RadioButton) findViewById(R.id.rbSearchByTitle);
RadioButton rbContent = (RadioButton) findViewById(R.id.rbSearchByContent);
String search_by = "";
if( selected_item_id == rbTitle.getId() ) {
search_by = "title";
} else if( selected_item_id == rbContent.getId() ) {
search_by = "content";
}
EditText etSearchKey = (EditText) findViewById(R.id.txtSearchKey);
if( etSearchKey.getText().length() < 1 )
{
Toast.makeText(
getBaseContext() , getString(R.string.search_error_enter_text) ,
Toast.LENGTH_SHORT ).show();
return;
}
String key = etSearchKey.getText().toString().trim();
String[] keys = key.split("\\s+");
String query = search_by + " LIKE '%" + keys[0] + "%'";
StringBuilder sb = new StringBuilder();
for( int i = 1; i < keys.length; i ++ )
{
sb.append( " OR " + search_by + " LIKE '%" + keys[i] + "%'" );
}
query = query + sb.toString();
/* title LIKE '%ali%' OR title LIKE '%reza%' OR ... */
showResultOfSearch(query);
}
public void showResultOfSearch(final String query )
{
db.open();
resultBooks = db.getTableOfResultsOfSearch( query );
db.close();
if( resultBooks.size() < 1 )
{
Toast.makeText(
getBaseContext() , getString(R.string.search_error_not_found) ,
Toast.LENGTH_SHORT ).show();
return ;
}
String[] from = { "title" , "fav_flag" , "see_flag" };
int[] to = { R.id.txtTitle , R.id.setFav , R.id.setSee };
SimpleAdapter adb = new SimpleAdapter(
getBaseContext() , resultBooks ,
R.layout.tbl_content_list_row , from , to
);
resultListView.setAdapter(adb);
resultListView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
Intent i = new Intent(getBaseContext(), book_content4.class);
String my_id = resultBooks.get(position).get("id").toString();
i.putExtra("id", my_id);
startActivity(i);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
}
);
}
protected void attachBaseContext(Context newBase)
{
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
}
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .