PDA

View Full Version : مشکل در جستو جو در حرف "ی"



1yaram
شنبه 25 مرداد 1393, 09:43 صبح
سلام
دوستان من یه مشکلی دارم اینکه:
وقتی تو دیتا بیس سرچ میکنم کلماتی که توش حرف "ی" داره رو نمیاره مثل "دریا"

smemamian
شنبه 25 مرداد 1393, 09:47 صبح
سلام

کد جستجوتون رو بذارید.

tux-world
شنبه 25 مرداد 1393, 10:35 صبح
خوب میتونین بر اساس اون چیزی که تو دیتابیستون هستش رو تغییر بدید یا اینکه دو تا سرچ کنید که قاعدتا به نظرم بهتر اینه که حرف ی ورودی رو بر اساس چیزی که تو دیتابیس هست جستجو کنید

1yaram
شنبه 25 مرداد 1393, 15:13 عصر
سلام

کد جستجوتون رو بذارید.
داخل فایل serach_all.java:


import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;


public class SearchAll extends Activity{
EditText et;
ListView lv;
Button btn;
ArrayList<TagsData> result=new ArrayList<TagsData>();

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.search_all);
lv=(ListView)findViewById(R.id.listView1);
et=(EditText)findViewById(R.id.editText1);
btn=(Button)findViewById(R.id.search_btn);


lv.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView<?> paramAdapterView,
View paramView, int paramInt, long paramLong) {
// TODO Auto-generated method stub
String str=result.get(paramInt).getDetails();
Intent i=new Intent(paramAdapterView.getContext(),Show_Activity .class);
i.putExtra("text", str);
startActivity(i);

}

});
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String key=et.getText().toString();



result=MainDBDataHelper.GetAllByQuery(getBaseConte xt(), key);

if(result.size()>0)
{
ArrayList<String> strings=new ArrayList<String>();
for(TagsData td:result)
{
strings.add(td.getName());
}
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,strings);
lv.setAdapter(adapter);


}
else
{
lv.setAdapter(null);

}




}
});

}

اینم از ExternalDbOpenHelper.java:


import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;


public class ExternalDbOpenHelper extends SQLiteOpenHelper {


public static String DB_PATH;
public static String DB_NAME;
public SQLiteDatabase database;
public final Context context;

public SQLiteDatabase getDb() {
return database;
}


public ExternalDbOpenHelper(Context context, String databaseName) {
super(context, databaseName, null, 1);
this.context = context;
String packageName = context.getPackageName();
DB_PATH = String.format("//data//data//%s//databases//", packageName);
DB_NAME = databaseName;
openDataBase();
}


public void createDataBase() {
boolean dbExist = checkDataBase();
if (!dbExist) {
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
Log.e(this.getClass().toString(), "Copying error");
throw new Error("Error copying database!");
}
} else {
Log.i(this.getClass().toString(), "Database already exists");
}
}
private boolean checkDataBase() {
SQLiteDatabase checkDb = null;
try {
String path = DB_PATH + DB_NAME;
checkDb = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLException e) {
Log.e(this.getClass().toString(), "Error while checking db");
}
if (checkDb != null) {
checkDb.close();
}
return checkDb != null;
}
private void copyDataBase() throws IOException {
InputStream externalDbStream = context.getAssets().open(DB_NAME);


String outFileName = DB_PATH + DB_NAME;


OutputStream localDbStream = new FileOutputStream(outFileName);


byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = externalDbStream.read(buffer)) > 0) {
localDbStream.write(buffer, 0, bytesRead);
}
localDbStream.close();
externalDbStream.close();


}


public SQLiteDatabase openDataBase() throws SQLException {
String path = DB_PATH + DB_NAME;
if (database == null) {
createDataBase();
database = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READWRITE);
}
return database;
}
@Override
public synchronized void close() {
if (database != null) {
database.close();
}
super.close();
}
@Override
public void onCreate(SQLiteDatabase db) {}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}


}


اینم از TagsData.java


public class TagsData {
private double id;
private String name;
private double subId;
private String details;

public double getId() {
return id;
}
public void setId(double id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}


public double getSubId() {
return subId;
}
public void setSubId(double subid) {
this.subId = subid;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}


}

barnamenevisjavan
شنبه 25 مرداد 1393, 16:31 عصر
دوست عزیز یا بیاید حرف ی رو توی دیتابیس کلا اصلاح کنید (توی دیتابیس بصورت ی عربی ذخیره شده همونی که زیرش تا نقطه داره) و بجاش از حرف ی فارسی استفاده کنید دومش هم اینه که وقتی کاربر داره حروف رو توی edittext وارد میکنه با یه شرط کوچیک چک کنید اگر ی عربی وارد شد با ی فارسی جایگزین بشه

1yaram
شنبه 25 مرداد 1393, 18:21 عصر
دوست عزیز یا بیاید حرف ی رو توی دیتابیس کلا اصلاح کنید (توی دیتابیس بصورت ی عربی ذخیره شده همونی که زیرش تا نقطه داره) و بجاش از حرف ی فارسی استفاده کنید دومش هم اینه که وقتی کاربر داره حروف رو توی edittext وارد میکنه با یه شرط کوچیک چک کنید اگر ی عربی وارد شد با ی فارسی جایگزین بشه
من نمیدونم چرا تو این سایت مد شده که همه فقط توضیح میدن الآن اگه شما کد این گفته تون رو میزاشتید عالی میشد
چون اگه خودم بلد بودم که دیگه اینجا سوال نمیکردم.
امیدوارم ناراحت نشی دوست عزیز منظورم همه بودن نه فقط شما

barnamenevisjavan
شنبه 25 مرداد 1393, 19:28 عصر
من نمیدونم چرا تو این سایت مد شده که همه فقط توضیح میدن الآن اگه شما کد این گفته تون رو میزاشتید عالی میشد
چون اگه خودم بلد بودم که دیگه اینجا سوال نمیکردم.
امیدوارم ناراحت نشی دوست عزیز منظورم همه بودن نه فقط شما
یه سرچ بزنی جوابو پیدا میکنی دیگه
این کد جایگزینیش دیگه بقیشو خودت برو دنبالش که کدو کجا بزاری
et = (EditText) findViewById(R.id.editText1);
String str = et.getText().toString();
str.replace('ی عربی اینجا','ی');
et.setText(str);

tux-world
شنبه 25 مرداد 1393, 19:56 عصر
خوب اینجا بیشتر راه حل ارائه میشه تا کد نوشتن. نمیدونم چرا خیلی ها فکر میکنن به مشکل که بر میخورن انتظار دارن بیان اینجا بهشون کد کامل رو بنویسیم بدیم و کپی پیست کنن. این که نمیشه :لبخند:

1yaram
شنبه 25 مرداد 1393, 20:13 عصر
خوب اینجا بیشتر راه حل ارائه میشه تا کد نوشتن. نمیدونم چرا خیلی ها فکر میکنن به مشکل که بر میخورن انتظار دارن بیان اینجا بهشون کد کامل رو بنویسیم بدیم و کپی پیست کنن. این که نمیشه :لبخند:
ببخشید ها ولی این سایت خارجی که دقت کنید هر کی سوالی میکنه جوابش رو یا با کد میگیرن یا با منبع:افسرده:
stackoverflow.com (http://stackoverflow.com)

#root#
شنبه 25 مرداد 1393, 20:14 عصر
من نمیدونم چرا تو این سایت مد شده که همه فقط توضیح میدن الآن اگه شما کد این گفته تون رو میزاشتید عالی میشد
چون اگه خودم بلد بودم که دیگه اینجا سوال نمیکردم.
امیدوارم ناراحت نشی دوست عزیز منظورم همه بودن نه فقط شما

مد نیست ، درستش همینه :|

abbasalim
شنبه 25 مرداد 1393, 23:36 عصر
سلام
قبلا هم این سوال شده بود سرچ کنید جواب رو پیدا میکنید البته فقط حرف ی این مشکل رو نداره حرف ک هم عربی و فارسیش فرق میکنه دیگه یادم نیست چه حرفهایی هستن
باید همشون رو ریپلیس کنید داخل دیتابیس هم اسکولایت کد ریپلیس داره یه سرچ داخل انجمن بزن کدهاش موجوده


به نظر من هم درستش اینه که کد نزاریم توضیح بدیم + سوالات تکراری معمولا بچه ها فقط جواب میدن و کسی کد نمیزاره
است اور فلو هم همه سوالاش با کد جواب نمیدن بستگی به سوال داره اینجا هم همینه