بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
نحوه گرفتن مقدار دیتابیس در اکتیویتی علاقه مندی ها(لطفا کمک کنید)
دوستان با چه کدی باید در اکتیویتی علاقمندی مقدار ذخیره شده دیتابیس رو فراخوانی کنم ؟
این اکتیویتی لیست ویو هست:
package com.nemone.favoritelist;
import android.os.Bundle;
import android.util.Log;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Adapter;
import android.widget.ListView;
public class MainActivity extends Activity {
private MyDatabase MyDatabase;
public ListView listview;
SQLiteDatabase mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDatabase = new MyDatabase(this);
mydb = MyDatabase.getReadableDatabase();
Cursor c = mydb.rawQuery("select id,name,category,like from list", null);
int ids[] = new int[c.getCount()];
String names[] = new String[c.getCount()];
String cats[] = new String[c.getCount()];
String likes[] = new String[c.getCount()];
int i = 0;
if(c.moveToFirst()) {
do {
ids[i] = c.getInt(0);
names[i] = c.getString(1);
cats[i] = c.getString(2);
likes[i] = c.getString(3);
i++;
} while (c.moveToNext());
c.close();
mydb.close();
}
listview = (ListView) findViewById(R.id.listView1);
MyAdapter adapter = new MyAdapter(this, names, cats, likes, ids);
listview.setAdapter(adapter);
}
}
اینم اکتیویتی myadapter:
package com.nemone.favoritelist;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
public class MyAdapter extends ArrayAdapter<String>{
private final Activity context;
String names[];
String cats[];
String likes[];
int ids[];
public MyAdapter(Activity context,String names[], String cats[], String likes[], int ids[]) {
super(context, R.layout.item, names);
this.context = context;
this.names = names;
this.cats = cats;
this.likes = likes;
this.ids = ids;
}
@Override
public boolean isEnabled(int position) {
// TODO Auto-generated method stub
return true;
}
@Override
public View getView(final int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.item, null, true);
TextView txtName = (TextView) rowView.findViewById(R.id.txt_name);
TextView txtCat = (TextView) rowView.findViewById(R.id.txt_numer);
CheckBox favotite = (CheckBox) rowView.findViewById(R.id.favorite_check);
txtName.setText(names[position]);
txtCat.setText(cats[position]);
if(likes[position].equals("no")) {
favotite.setChecked(false);
} else if (likes[position].equals("yes")) {
favotite.setChecked(true);
}
Log.i("tag", "likes :"+likes[position]);
favotite.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
MyDatabase MyDatabase = new MyDatabase(context);
SQLiteDatabase mydb = MyDatabase.getWritableDatabase();
if(isChecked == true) {
mydb.execSQL("update list set like = 'yes' where id = " + ids[position]);
} else {
mydb.execSQL("update list set like = 'no' where id = " + ids[position]);
}
mydb.close();
}
});
return rowView;
}
}
+1
0
میتونید یه فیلد توی جدول داشته باشید که مثلا مقدار پیش فرضش صفره حالا هر آیتمی که توی علاقه ها ثبت میشه مقدار این فیلد رو 1 کن. حالا توی اکتیویتی علاقه ها رکوردهایی رو که مقدار این فیلدشون 1 هست رو بگیر برای اینکار از دستور WHERE توی کوئری استفان کنید (10 سال پیش)
0
0
فیلد likes این کارو میکنه فقط من زیاد وارد نیستم نمیدونم تو اکتیویتی چه کدهایی رو بنویسم براش (10 سال پیش)
0
0
دوستان من مدت زیادیه درگیر اینم یه برنامه کوچک نوشتم که میخوام علاقه مندی اضافه کنم تازه کار هم هستم اگه میتونید واضح توضیح بدین چکار کنم (10 سال پیش)
+1
0
دوست عزیز این تاپیک جامع هستش امیدوارم براتون مفید باشه لینک (10 سال پیش)
0
0
ممنون ولی این کلا فرق داره با اون چیزی که من تا به حال جلو رفتم من کلا 3 تا اکتیویتی دارم که سورس 2 تارو بالا گذاشتم و فقط میمونه کدهای علاقمندی (10 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
MeY3am
10 سال پیش
+1
0
برای نمایش لیست علاقه مندی ها از این متد استفاده کن
private void DisplayFavorites() {
Cursor cursor = G.database.rawQuery("SELECT * FROM table_name WHERE fav = 1", null);
while (cursor.moveToNext()) {
StructNote note_fav = new StructNote();
note_fav.NAME = cursor.getString(cursor.getColumnIndex("name"));
notesfav.add(note_fav);
}
cursor.close();
adapter.notifyDataSetChanged();
}
کد کامل کلاس
public class ActivityFav extends EnhancedActivity {
private ListView lstFav;
private AdapterNoteFav adapter;
private ArrayList<StructNote> notesfav = new ArrayList<StructNote>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fav);
lstFav = (ListView) findViewById(R.id.lst_fav);
adapter = new AdapterNoteFav(notesfav);
lstFav.setAdapter(adapter);
DisplayFavorites();
}
private void DisplayFavorites() {
Cursor cursor = G.database.rawQuery("SELECT * FROM table_name WHERE fav = 1", null);
while (cursor.moveToNext()) {
StructNote note_fav = new StructNote();
note_fav.NAME = cursor.getString(cursor.getColumnIndex("name"));
notesfav.add(note_fav);
}
cursor.close();
adapter.notifyDataSetChanged();
}
}
حتما در کلاس StructNote یه فیلد String به اسم NAME تعریف کن
سئوالیم داشتی در خدمتم !
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .