zarabela
دوشنبه 26 مرداد 1394, 18:29 عصر
سلام دوستان
من توی برنامم از دیتابیس استفاده کردم و حالا برای ایجاد لیست علاقمندی به مشکل برخوردم ، کدهام هم به صورت زیر هستن:
DatabaseHandler:
package com.example.data;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
public final String path="data/data/com.example.data/databases/";
public SQLiteDatabase mydb;
private final Context myContext;
private static final String DATABASE_NAME="lakii";
public final String table="abyat";
public final String fav_table="favs";
public final String id="_id";
public final String beyt="beyt";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, 1);
myContext=context;
}
@Override
public void onCreate(SQLiteDatabase arg0) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void useable() {
boolean chekdb=checkdb();
if(chekdb){
}else {
this.getReadableDatabase();
try {
copydatabase();
} catch (IOException e) {
// TODO: handle exception
}
}
}
public void open() {
mydb=SQLiteDatabase.openDatabase(path+DATABASE_NAM E, null,
SQLiteDatabase.OPEN_READWRITE);
}
public void close() {
mydb.close();
}
public boolean checkdb() {
SQLiteDatabase db=null;
try {
db=SQLiteDatabase.openDatabase(path+DATABASE_NAME, null,
SQLiteDatabase.OPEN_READWRITE);
} catch (SQLException e) {
// TODO: handle exception
}
return db!=null?true:false;
}
public long insertBeyt(String beYt) {
ContentValues initialValues=new ContentValues();
initialValues.put(beyt, beYt);
return mydb.insert(fav_table, null, initialValues);
}
public boolean deleteBeyt(String bEyt,String tbl_name) {
return mydb.delete(tbl_name, beyt+" LIKE '"+bEyt+"'", null)>0;
}
public void copydatabase () throws IOException{
OutputStream myOutput=new FileOutputStream(path+DATABASE_NAME);
byte[] buffer=new byte[1024];
int length;
InputStream myInput=myContext.getAssets().open(DATABASE_NAME);
while ((length=myInput.read(buffer))>0) {
myOutput.write(buffer, 0, length);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
public String[] getFirstList() {
String[] list;
Cursor c=mydb.rawQuery("select * from "+table+" ORDER BY "+id, null);
list=new String[c.getCount()];
c.moveToFirst();
for (int i = 0; i < c.getCount(); i++) {
list[i]=c.getString(c.getColumnIndex(beyt));
c.moveToNext();
}
c.close();
return list;
}
//getFavBeyt
public String[] getFav() {
String[] list;
Cursor c=mydb.rawQuery("select * from "+fav_table+" ORDER BY "+id, null);
list=new String[c.getCount()];
c.moveToFirst();
for (int i = 0; i < c.getCount(); i++) {
list[i]=c.getString(c.getColumnIndex(beyt));
c.moveToNext();
}
c.close();
return list;
}
//*****************************
public Cursor getBeyt(long rowId)throws SQLException {
Cursor mCursor=mydb.query(true,
table, new String[]{id,beyt}, id+"="+rowId,
null, null, null, null, null);
if(mCursor!=null){
mCursor.moveToFirst();
}
return mCursor;
}
public Cursor getBeYT(String beYt,String table) throws SQLException
{
Cursor mCursor =
mydb.query(true, table, new String[] {id,
beyt, }, beyt + " LIKE '" + beYt + "'", null,
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public String[] getNewList(String keyWord) {
String[] list;
Cursor c=mydb.rawQuery(" select * from "+table+" where "+beyt
+" LIKE '%"+keyWord+"%' ORDER BY "+id, null);
list=new String[c.getCount()];
c.moveToFirst();
for (int i = 0; i < c.getCount(); i++) {
list[i]=c.getString(c.getColumnIndex(beyt));
c.moveToNext();
}
c.close();
return list;
}
}
MainActivity
package com.example.data;
import android.os.Bundle;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ListActivity {
private DatabaseHandler db;
private EditText et;
private String[] list_beyt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db=new DatabaseHandler(this);
db.useable();
db.open();
list_beyt=db.getFirstList();
db.close();
tazeSazi();
et=(EditText)findViewById(R.id.eDitText1);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@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
String keyWord=et.getText().toString().trim();
db.open();
list_beyt=db.getNewList(keyWord);
db.close();
tazeSazi();
}
});
}
public class myAdapter extends ArrayAdapter<String> {
public myAdapter(Context context, int resource, int textViewResourceId,
String[] objects) {
super(context, resource, textViewResourceId, objects);
// TODO Auto-generated constructor stub
}
@Override
public View getView(final int position,View convertView,ViewGroup parent) {
LayoutInflater inflater=(LayoutInflater)getSystemService(Context. LAYOUT_INFLATER_SERVICE);
View row=inflater.inflate(R.layout.list_item, parent, false);
TextView tv=(TextView)row.findViewById(R.id.list_Txt);
ImageView share=(ImageView)row.findViewById(R.id.share_Btn);
ImageView fav=(ImageView)row.findViewById(R.id.fav_Btn);
tv.setText(list_beyt[position]);
//share
share.setOnClickListener(new OnClickListener(){
public void share(){
Intent share=new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
String my_String = list_beyt[position];
share.putExtra(Intent.EXTRA_TEXT, my_String);
startActivity(Intent.createChooser(share, "Share via..."));
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
share();
}
});
fav.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
db.useable();
db.open();
// TODO Auto-generated method stub
if(db.getBeYT(list_beyt[position], db.fav_table).getCount()>0){
db.deleteBeyt(list_beyt[position], db.fav_table);
Toast.makeText(MainActivity.this,
"از لیست مورد علاقه ها حذف شد", Toast.LENGTH_SHORT).show();
}else {
db.insertBeyt(list_beyt[position]);
Toast.makeText(MainActivity.this,
"به لیست مورد علاقه ها اضافه شد", Toast.LENGTH_SHORT).show();
}
}
});
db.close();
return row;
}
}
public void tazeSazi() {
//setListAdapter(new ArrayAdapter<String>(this,
// android.R.layout.simple_list_item_1,list_beyt));
setListAdapter(new myAdapter(this, R.id.list_Txt, android.R.layout.simple_list_item_1, list_beyt));
}
}
FavActivity:
package com.example.data;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class FavActivity extends ListActivity {
DatabaseHandler db;
String[] list_beyt;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fav);
db=new DatabaseHandler(this);
db.useable();
db.open();
list_beyt=db.getFav();
db.close();
tazesazi();
}
public void tazesazi() {
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,list_beyt));
}
}
اگه ممکنه راهنماییم کنید :لبخندساده: شدیدا بهش نیاز دارم:گریه:
من توی برنامم از دیتابیس استفاده کردم و حالا برای ایجاد لیست علاقمندی به مشکل برخوردم ، کدهام هم به صورت زیر هستن:
DatabaseHandler:
package com.example.data;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
public final String path="data/data/com.example.data/databases/";
public SQLiteDatabase mydb;
private final Context myContext;
private static final String DATABASE_NAME="lakii";
public final String table="abyat";
public final String fav_table="favs";
public final String id="_id";
public final String beyt="beyt";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, 1);
myContext=context;
}
@Override
public void onCreate(SQLiteDatabase arg0) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void useable() {
boolean chekdb=checkdb();
if(chekdb){
}else {
this.getReadableDatabase();
try {
copydatabase();
} catch (IOException e) {
// TODO: handle exception
}
}
}
public void open() {
mydb=SQLiteDatabase.openDatabase(path+DATABASE_NAM E, null,
SQLiteDatabase.OPEN_READWRITE);
}
public void close() {
mydb.close();
}
public boolean checkdb() {
SQLiteDatabase db=null;
try {
db=SQLiteDatabase.openDatabase(path+DATABASE_NAME, null,
SQLiteDatabase.OPEN_READWRITE);
} catch (SQLException e) {
// TODO: handle exception
}
return db!=null?true:false;
}
public long insertBeyt(String beYt) {
ContentValues initialValues=new ContentValues();
initialValues.put(beyt, beYt);
return mydb.insert(fav_table, null, initialValues);
}
public boolean deleteBeyt(String bEyt,String tbl_name) {
return mydb.delete(tbl_name, beyt+" LIKE '"+bEyt+"'", null)>0;
}
public void copydatabase () throws IOException{
OutputStream myOutput=new FileOutputStream(path+DATABASE_NAME);
byte[] buffer=new byte[1024];
int length;
InputStream myInput=myContext.getAssets().open(DATABASE_NAME);
while ((length=myInput.read(buffer))>0) {
myOutput.write(buffer, 0, length);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
public String[] getFirstList() {
String[] list;
Cursor c=mydb.rawQuery("select * from "+table+" ORDER BY "+id, null);
list=new String[c.getCount()];
c.moveToFirst();
for (int i = 0; i < c.getCount(); i++) {
list[i]=c.getString(c.getColumnIndex(beyt));
c.moveToNext();
}
c.close();
return list;
}
//getFavBeyt
public String[] getFav() {
String[] list;
Cursor c=mydb.rawQuery("select * from "+fav_table+" ORDER BY "+id, null);
list=new String[c.getCount()];
c.moveToFirst();
for (int i = 0; i < c.getCount(); i++) {
list[i]=c.getString(c.getColumnIndex(beyt));
c.moveToNext();
}
c.close();
return list;
}
//*****************************
public Cursor getBeyt(long rowId)throws SQLException {
Cursor mCursor=mydb.query(true,
table, new String[]{id,beyt}, id+"="+rowId,
null, null, null, null, null);
if(mCursor!=null){
mCursor.moveToFirst();
}
return mCursor;
}
public Cursor getBeYT(String beYt,String table) throws SQLException
{
Cursor mCursor =
mydb.query(true, table, new String[] {id,
beyt, }, beyt + " LIKE '" + beYt + "'", null,
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public String[] getNewList(String keyWord) {
String[] list;
Cursor c=mydb.rawQuery(" select * from "+table+" where "+beyt
+" LIKE '%"+keyWord+"%' ORDER BY "+id, null);
list=new String[c.getCount()];
c.moveToFirst();
for (int i = 0; i < c.getCount(); i++) {
list[i]=c.getString(c.getColumnIndex(beyt));
c.moveToNext();
}
c.close();
return list;
}
}
MainActivity
package com.example.data;
import android.os.Bundle;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ListActivity {
private DatabaseHandler db;
private EditText et;
private String[] list_beyt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db=new DatabaseHandler(this);
db.useable();
db.open();
list_beyt=db.getFirstList();
db.close();
tazeSazi();
et=(EditText)findViewById(R.id.eDitText1);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@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
String keyWord=et.getText().toString().trim();
db.open();
list_beyt=db.getNewList(keyWord);
db.close();
tazeSazi();
}
});
}
public class myAdapter extends ArrayAdapter<String> {
public myAdapter(Context context, int resource, int textViewResourceId,
String[] objects) {
super(context, resource, textViewResourceId, objects);
// TODO Auto-generated constructor stub
}
@Override
public View getView(final int position,View convertView,ViewGroup parent) {
LayoutInflater inflater=(LayoutInflater)getSystemService(Context. LAYOUT_INFLATER_SERVICE);
View row=inflater.inflate(R.layout.list_item, parent, false);
TextView tv=(TextView)row.findViewById(R.id.list_Txt);
ImageView share=(ImageView)row.findViewById(R.id.share_Btn);
ImageView fav=(ImageView)row.findViewById(R.id.fav_Btn);
tv.setText(list_beyt[position]);
//share
share.setOnClickListener(new OnClickListener(){
public void share(){
Intent share=new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
String my_String = list_beyt[position];
share.putExtra(Intent.EXTRA_TEXT, my_String);
startActivity(Intent.createChooser(share, "Share via..."));
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
share();
}
});
fav.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
db.useable();
db.open();
// TODO Auto-generated method stub
if(db.getBeYT(list_beyt[position], db.fav_table).getCount()>0){
db.deleteBeyt(list_beyt[position], db.fav_table);
Toast.makeText(MainActivity.this,
"از لیست مورد علاقه ها حذف شد", Toast.LENGTH_SHORT).show();
}else {
db.insertBeyt(list_beyt[position]);
Toast.makeText(MainActivity.this,
"به لیست مورد علاقه ها اضافه شد", Toast.LENGTH_SHORT).show();
}
}
});
db.close();
return row;
}
}
public void tazeSazi() {
//setListAdapter(new ArrayAdapter<String>(this,
// android.R.layout.simple_list_item_1,list_beyt));
setListAdapter(new myAdapter(this, R.id.list_Txt, android.R.layout.simple_list_item_1, list_beyt));
}
}
FavActivity:
package com.example.data;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class FavActivity extends ListActivity {
DatabaseHandler db;
String[] list_beyt;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fav);
db=new DatabaseHandler(this);
db.useable();
db.open();
list_beyt=db.getFav();
db.close();
tazesazi();
}
public void tazesazi() {
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,list_beyt));
}
}
اگه ممکنه راهنماییم کنید :لبخندساده: شدیدا بهش نیاز دارم:گریه: