سلام
من میخوام لیست علاقمندی ها بسازم.
تویِ دیتابیسم یه ستون با نام fav_flag و نوع BOOL ساختم.
این کد مربوط به فایل favorite:
کد فایل DatabaseHandler:
اما این کدها نمیدونم درست نوشتم یا خیر:
که البته see برای خوانده شده و نشده هست (که اون رو مجزا میپرسم)
حالا توی فایل اکتیویتی که میخوام نمایش بدم از کد زیر استفاده میکنم:
من میخوام لیست علاقمندی ها بسازم.
تویِ دیتابیسم یه ستون با نام fav_flag و نوع BOOL ساختم.
این کد مربوط به فایل favorite:
private ListView FavortieListView; private List<HashMap<String , Object>> favorite_list; private DatabaseHandler db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_favorites); FavortieListView = (ListView) findViewById(R.id.listview_favorites); db = new DatabaseHandler( getBaseContext() ); db.open(); favorite_list = db.getTableOfFavoriteContent(); String[] from= {"poetry", "poetname","fav_flag","see_flag"}; int[] to= {R.id.matne_sher, R.id.shaer,R.id.btn_fav,R.id.btn_see_unsee}; SimpleAdapter adb = new SimpleAdapter( getBaseContext() , favorite_list , R.layout.custom_sher_list , from , to ); FavortieListView.setAdapter(adb); db.close(); }
کد فایل DatabaseHandler:
public List<HashMap <String , Object>> getAshar () { Cursor c = db.rawQuery("SELECT poems.*,poets.name AS poetname FROM poems LEFT OUTER JOIN poets ON poems.poets_id=poets.id WHERE first_category_id=1", null); List<HashMap<String , Object>> allData = new ArrayList<>(); while (c.moveToNext()) { HashMap<String , Object> temp = new HashMap<>(); temp.put("id", c.getString(c.getColumnIndex("id"))); temp.put("first_category_id", c.getString(c.getColumnIndex("first_category_id"))); temp.put("poets_id", c.getString(c.getColumnIndex("poets_id"))); temp.put("poetry", c.getString(c.getColumnIndex("poetry"))); temp.put("poetname", c.getString(c.getColumnIndex("poetname"))); if( c.getString( c.getColumnIndex("fav_flag") ).equals("1") ) { temp.put( "fav_flag" , R.drawable.fav_enable ); } else { temp.put( "fav_flag" , R.drawable.fav_disable ); } if( c.getString(c.getColumnIndex("see_flag")).equals("1") ) { temp.put( "see_flag" , R.drawable.see ); } else { temp.put( "see_flag" , R.drawable.unsee ); } allData.add(temp); } return allData; }
اما این کدها نمیدونم درست نوشتم یا خیر:
if( c.getString( c.getColumnIndex("fav_flag") ).equals("1") ) { temp.put( "fav_flag" , R.drawable.fav_enable ); } else { temp.put( "fav_flag" , R.drawable.fav_disable ); } if( c.getString(c.getColumnIndex("see_flag")).equals("1") ) { temp.put( "see_flag" , R.drawable.see ); } else { temp.put( "see_flag" , R.drawable.unsee );
که البته see برای خوانده شده و نشده هست (که اون رو مجزا میپرسم)
حالا توی فایل اکتیویتی که میخوام نمایش بدم از کد زیر استفاده میکنم:
contentListView = (ListView) findViewById(R.id.list_view); db = new DatabaseHandler( getBaseContext() ); db.open(); ashar = db.getAshar(); String[] from= {"poetry", "poetname","fav_flag","see_flag"}; int[] to= {R.id.matne_sher, R.id.shaer,R.id.btn_fav,R.id.btn_see_unsee}; SimpleAdapter adb = new SimpleAdapter( getBaseContext() , ashar , R.layout.custom_sher_list , from , to ); حالا صفحه favorite بالا میاد اما صفحه اشعار بالا نمیاد و خطا میده و مربوط به همون فایل DatabaseHandler هست. ممنون میشم راهنماییم کنید که چطور درست کنم. contentListView.setAdapter( adb ); db.close();