meysam jahedi
یک شنبه 19 بهمن 1393, 00:26 صبح
سلام
یه دیتابیس ساده دارم که هیچ چیز مبهمی توش نیست ، و توسط دستورات زیر از دیتابیس میخونم و تو لیست ویو نشون میدم
public void refresh2(){
mydb=mydata.getReadableDatabase();
Cursor cu=mydb.rawQuery("select * from tbl where fav=1",null);
int s =cu.getCount();
String ss=String.valueOf(s);
if (s==0){
finish();
Toast.makeText(getApplicationContext(), "لیست علاقه مندیهای شما خالی است", Toast.LENGTH_LONG).show();
}
NAME=new String[s];
kholase=new String[s];
for(int i=0;i<s;i++){
NAME[i]=fav_display(i,2);
kholase[i]=fav_display(i,5);
}
setListAdapter(new MyAdapterFav(this,NAME,kholase));
mydb.close();
Toast.makeText(getApplicationContext(), ss, Toast.LENGTH_LONG).show();///تعدا رکورد ها
}
public String fav_display(int row,int field){
Cursor cu=mydb.rawQuery("select * from tbl where fav=1 ", null);
cu.moveToPosition(row);
String b=cu.getString(field);
return b;
}
public class MyAdapterFav extends BaseAdapter {
private Fav fav;
ListActivity a;
String[] N;
String[] kh;
private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapterFav (ListActivity act,String[] name,String[] kholase){
a=act;
this.N=name;
this.kh=kholase;
this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {
View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);
mylist = inflater.inflate(R.layout.row_listfav, null);
TextView textView1 = (TextView) mylist.findViewById(R.id.row_listfav_name);
TextView textView2 = (TextView) mylist.findViewById(R.id.row_page);
final ImageView img=(ImageView) mylist.findViewById(R.id.row_listfav_img);
textView2.setText("صفحه : "+N[pos]);
textView1.setText(kh[pos]);
textView1.setTypeface(Main.font);
textView2.setTypeface(Main.font);
if (Main.mode.equals("day")) {
textView1.setTextColor(Color.BLACK);
textView2.setTextColor(Color.BLACK);
}else {
textView1.setTextColor(Color.WHITE);
textView2.setTextColor(Color.WHITE);
}
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE page='"+N[pos]+"'");
mydb.close();
((Fav) a).refresh2();
notifyDataSetChanged();
}
});
} else {
mylist = convertView;
}
return mylist;
}
}
نمیدونم مشکلش کجاست که فقط تا نهایت 6 الی 7 تا رکورد رو تو لیست ویو نشون میده و باز شروع به تکرار میکنه !!! با اینکه تو لود اولیه یه toast گذاشتم و تعداد دقیق رکورد ها هم نشون میده و همه رکورد هایی که باید رو " دریافت کرده ، اما با این حال همه رو نشون نمیده و فقط 5 الی 6 تا رو میاره و در ادامش شروع به تکرار 2 یا 3 تا از رکورد های پیشین میکنه ؟!!! دیتابیس هم چیز خاصی نداره که بگیم group میخواد !!
یه دیتابیس ساده دارم که هیچ چیز مبهمی توش نیست ، و توسط دستورات زیر از دیتابیس میخونم و تو لیست ویو نشون میدم
public void refresh2(){
mydb=mydata.getReadableDatabase();
Cursor cu=mydb.rawQuery("select * from tbl where fav=1",null);
int s =cu.getCount();
String ss=String.valueOf(s);
if (s==0){
finish();
Toast.makeText(getApplicationContext(), "لیست علاقه مندیهای شما خالی است", Toast.LENGTH_LONG).show();
}
NAME=new String[s];
kholase=new String[s];
for(int i=0;i<s;i++){
NAME[i]=fav_display(i,2);
kholase[i]=fav_display(i,5);
}
setListAdapter(new MyAdapterFav(this,NAME,kholase));
mydb.close();
Toast.makeText(getApplicationContext(), ss, Toast.LENGTH_LONG).show();///تعدا رکورد ها
}
public String fav_display(int row,int field){
Cursor cu=mydb.rawQuery("select * from tbl where fav=1 ", null);
cu.moveToPosition(row);
String b=cu.getString(field);
return b;
}
public class MyAdapterFav extends BaseAdapter {
private Fav fav;
ListActivity a;
String[] N;
String[] kh;
private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapterFav (ListActivity act,String[] name,String[] kholase){
a=act;
this.N=name;
this.kh=kholase;
this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {
View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);
mylist = inflater.inflate(R.layout.row_listfav, null);
TextView textView1 = (TextView) mylist.findViewById(R.id.row_listfav_name);
TextView textView2 = (TextView) mylist.findViewById(R.id.row_page);
final ImageView img=(ImageView) mylist.findViewById(R.id.row_listfav_img);
textView2.setText("صفحه : "+N[pos]);
textView1.setText(kh[pos]);
textView1.setTypeface(Main.font);
textView2.setTypeface(Main.font);
if (Main.mode.equals("day")) {
textView1.setTextColor(Color.BLACK);
textView2.setTextColor(Color.BLACK);
}else {
textView1.setTextColor(Color.WHITE);
textView2.setTextColor(Color.WHITE);
}
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
mydb=mydata.getWritableDatabase();
mydb.execSQL("UPDATE tbl SET fav='0' WHERE page='"+N[pos]+"'");
mydb.close();
((Fav) a).refresh2();
notifyDataSetChanged();
}
});
} else {
mylist = convertView;
}
return mylist;
}
}
نمیدونم مشکلش کجاست که فقط تا نهایت 6 الی 7 تا رکورد رو تو لیست ویو نشون میده و باز شروع به تکرار میکنه !!! با اینکه تو لود اولیه یه toast گذاشتم و تعداد دقیق رکورد ها هم نشون میده و همه رکورد هایی که باید رو " دریافت کرده ، اما با این حال همه رو نشون نمیده و فقط 5 الی 6 تا رو میاره و در ادامش شروع به تکرار 2 یا 3 تا از رکورد های پیشین میکنه ؟!!! دیتابیس هم چیز خاصی نداره که بگیم group میخواد !!