I have a database and i whant to write class to search in this i have xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://ift.tt/nIICcg"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
android:id="@+id/search_word"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/search_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/search_word"
android:layout_marginTop="19dp"
android:gravity="center"
android:text="TextView" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/search_status" >
</ListView>
</RelativeLayout>
and i whant when user type in EditText can see result in list and in TextView see number of result i write my class
public class search extends ListActivity {
private database db;
private String[] Name;
private String[] cPage;
private String[] Page;
private EditText word;
private TextView status;
private TextView name;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
db = new database(this);
word=(EditText) findViewById(R.id.search_word);
status=(TextView) findViewById(R.id.search_status);
refresh(word.getText().toString(), "Matn");
word.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
refresh(word.getText().toString(), "Matn");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Intent i = new Intent(search.this,main_matn.class);
i.putExtra("name",Name[position]);
i.putExtra("page", cPage[position]);
startActivity(i);
}
class AA extends ArrayAdapter<String>{
public AA(){
super(search.this,R.layout.row_main,Name);
}
public View getView(final int position, View convertView, ViewGroup parent){
LayoutInflater in=getLayoutInflater();
View row =in.inflate(R.layout.row_main, parent, false);
name =(TextView) row.findViewById(R.id.row_main_name);
name.setText(Name[position]);
return (row);
}
}
private void refresh(String word,String field){
db.open();
int s = db.count_search(word, field);
if(word.equals("")){
s=0;
status.setText("لطفا کلمه مورد جستجو را وارد کنید");
}
status.setText("تعداد"+s+" یافت شد");
Name= new String[s];
cPage= new String[s];
Page= new String[s];
for(int i=0;i<s;i++){
Name[i]=db.search(i, 2, word, field);
cPage[i]=db.page_count("text", Name[i])+"";
Page[i]=db.search(i, 4, word, field);
}
setListAdapter(new AA());
db.close();
}
}
in database class i write function
public Integer count_search(String word,String field){
Cursor cu=mydb.rawQuery("select * from text where "+field+" Like '%"+word+"%'", null);
int s=cu.getCount();
return s;
}
public String search(int row,int col,String word,String field){
Cursor cu=mydb.rawQuery("select * from text where "+field+" Like '%"+word+"%'", null);
cu.moveToPosition(row);
String s=cu.getString(col);
return s;
}
public Integer page_count(String table,String name){
Cursor cu=mydb.rawQuery("select * from "+table+" where Header='"+name+"'", null);
int s=cu.getCount();
return s;
}
and when i run this it force close and in logcat say problem in this
setContentView(R.layout.search);
Aucun commentaire:
Enregistrer un commentaire