بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

نحوه گرفتن مقدار دیتابیس در اکتیویتی علاقه مندی ها(لطفا کمک کنید)

مدیریت گفتگو
Atlas 10 سال پیش
آخرین تغییر: 10 سال پیش

دوستان با چه کدی باید در اکتیویتی علاقمندی مقدار ذخیره شده دیتابیس رو فراخوانی کنم ؟

این اکتیویتی لیست ویو هست:

 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;
}
}

نظرات

hosseinAmini 10 سال پیش
میتونید یه فیلد توی جدول داشته باشید که مثلا مقدار پیش فرضش صفره حالا هر آیتمی که توی علاقه ها ثبت میشه مقدار این فیلد رو 1 کن. حالا توی اکتیویتی علاقه ها رکوردهایی رو که مقدار این فیلدشون 1 هست رو بگیر برای اینکار از دستور WHERE توی کوئری استفان کنید
Atlas 10 سال پیش
فیلد likes این کارو میکنه فقط من زیاد وارد نیستم نمیدونم تو اکتیویتی چه کدهایی رو بنویسم براش
Atlas 10 سال پیش
دوستان من مدت زیادیه درگیر اینم یه برنامه کوچک نوشتم که میخوام علاقه مندی اضافه کنم تازه کار هم هستم اگه میتونید واضح توضیح بدین چکار کنم
MeY3am 10 سال پیش
دوست عزیز این تاپیک جامع هستش امیدوارم براتون مفید باشه لینک
Atlas 10 سال پیش
ممنون ولی این کلا فرق داره با اون چیزی که من تا به حال جلو رفتم من کلا 3 تا اکتیویتی دارم که سورس 2 تارو بالا گذاشتم و فقط میمونه کدهای علاقمندی

پاسخ‌ها 1

MeY3am 10 سال پیش

برای نمایش لیست علاقه مندی ها از این متد استفاده کن

 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 تعریف کن 


سئوالیم داشتی در خدمتم !

 

نظرات

Atlas 10 سال پیش
خیلی ممنون که پیگیرین ، من از این سورس استفاده کردم و کلاس های که شما گفتین داخلش نیست لطف کنید یه نگاه به سورس بندازین.http://www.mediafire.com/download/nwd65vd2ejvovpc/listview+custom+2.rar

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .