soroush_habibi

مشکل در نمایش اطلاعات دیتابیس در ریسایکلرویو

3 ارسال در این موضوع قرار دارد

سلام به همه من یه دیتابیس با یه ریسایکلر ویو ساختم ولی هرچی میکنم اطلاعات دیتابیس در ریسایکلرویو نمایش داده نمیشه.کدکلاسdatabasehelper

 

:

public class DatabaseHelpher extends SQLiteOpenHelper{

    Context context;

    private static final String DATABASE_NAME="Mohasebat";
    private static final int DATABASE_VERSION = 1;
    private static final String main_table = "mainpage";
    private static final String table1 = "CREATE TABLE "+main_table+"(A1    TEXT  NOT NULL,AM    TEXT NOT NULL,A2    TEXT  NOT NULL,javab TEXT NOT NULL )";

    public DatabaseHelpher(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(table1);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS " + main_table);

        onCreate(db);
    }

    public void insertIntoDB(String A1,String AM,String A2,String javab){
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put("A1", A1);
        values.put("AM", AM);
        values.put("A2", A2);
        values.put("javab", javab);

        db.insert(main_table, null, values);
        db.close();
    }

    public data getDataFromDB(){
        String query = "select * from "+main_table;

        data model = null;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query,null);

        if (cursor.moveToFirst()){
            do {
                String A1 = cursor.getString(0);
                String AM = cursor.getString(1);
                String A2 = cursor.getString(2);
                String javab = cursor.getString(3);
                model = new data(A1,AM,A2,javab);
            }while (cursor.moveToNext());
        }

        return model;
    }
}
اینم کد ریسایکلرویو:

public class Recycler_View_Adapter extends RecyclerView.Adapter<Recycler_View_Adapter.adapter>{
    private ArrayList<data> data1;
    public Recycler_View_Adapter(ArrayList<data> data) {
        this.data1 = data;
    }

    @Override
    public adapter onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item , parent , false);
        adapter ad = new adapter(v);
        return ad;
    }

    @Override
    public void onBindViewHolder(adapter holder, int position) {
        holder.adad1.setText(data1.get(position).getadad1());
        holder.adad2.setText(data1.get(position).getAdad2());
        holder.am.setText(data1.get(position).getAm());
        holder.javab.setText(data1.get(position).getJavab());
    }

    @Override
    public int getItemCount() {
        return data1.size();
    }

    public class adapter extends RecyclerView.ViewHolder {
        public TextView adad1;
        public TextView adad2;
        public TextView am;
        public TextView javab;
        public adapter(final View itemView) {
            super(itemView);
            adad1 = (TextView)itemView.findViewById(R.id.adad1);
            adad2 = (TextView)itemView.findViewById(R.id.adad2);
            am = (TextView)itemView.findViewById(R.id.am);
            javab = (TextView)itemView.findViewById(R.id.javab);
            adad1.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
            adad2.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
            am.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
            javab.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
            itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
        }
    }
    public void add(data d){
        data1.add(d);
        notifyItemInserted(this.data1.size() -1);
    }
}


اینم کلاس data:


public class data {
    public String adad1;
    public String am;
    public String adad2;
    public String javab;

    public String getadad1() {
        return adad1;
    }

    public void setadad1(String adad1) {
        this.adad1 = adad1;
    }

    public String getAdad2() {
        return adad2;
    }

    public void setAdad2(String adad2) {
        this.adad2 = adad2;
    }

    public String getAm() {
        return am;
    }

    public void setAm(String am) {
        this.am = am;
    }

    public String getJavab() {
        return javab;
    }

    public void setJavab(String javab) {
        this.javab = javab;
    }

    public data(String adad1,String am,String adad2,String javab) {
        this.adad1 = adad1;
        this.adad2 = adad2;
        this.am = am;
        this.javab = javab;
    }
}


اینم قسمتی از کد اکتیویتی:


private RecyclerView rc;
ArrayList<data> data1;


rc = (RecyclerView) findViewById(R.id.rc);
data1 = new ArrayList<>();
final Recycler_View_Adapter mAdapter = new Recycler_View_Adapter(data1);
rc.setAdapter(mAdapter);
rc.setLayoutManager(new LinearLayoutManager(this));
RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
itemAnimator.setAddDuration(500);
itemAnimator.setRemoveDuration(500);
rc.setItemAnimator(itemAnimator);


DatabaseHelpher helpher = new DatabaseHelpher(mainpage.this);
helpher.insertIntoDB(String.valueOf(number1),"^",String.valueOf(number2),"=" + String.valueOf(rsl));
data data2 = helpher.getDataFromDB();
mAdapter.add(data2);

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 15 ساعت قبل، soroush_habibi گفته است :

سلام به همه من یه دیتابیس با یه ریسایکلر ویو ساختم ولی هرچی میکنم اطلاعات دیتابیس در ریسایکلرویو نمایش داده نمیشه.کدکلاسdatabasehelper

 


:

public class DatabaseHelpher extends SQLiteOpenHelper{

    Context context;

    private static final String DATABASE_NAME="Mohasebat";
    private static final int DATABASE_VERSION = 1;
    private static final String main_table = "mainpage";
    private static final String table1 = "CREATE TABLE "+main_table+"(A1    TEXT  NOT NULL,AM    TEXT NOT NULL,A2    TEXT  NOT NULL,javab TEXT NOT NULL )";

    public DatabaseHelpher(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        this.context = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(table1);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS " + main_table);

        onCreate(db);
    }

    public void insertIntoDB(String A1,String AM,String A2,String javab){
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put("A1", A1);
        values.put("AM", AM);
        values.put("A2", A2);
        values.put("javab", javab);

        db.insert(main_table, null, values);
        db.close();
    }

    public data getDataFromDB(){
        String query = "select * from "+main_table;

        data model = null;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query,null);

        if (cursor.moveToFirst()){
            do {
                String A1 = cursor.getString(0);
                String AM = cursor.getString(1);
                String A2 = cursor.getString(2);
                String javab = cursor.getString(3);
                model = new data(A1,AM,A2,javab);
            }while (cursor.moveToNext());
        }

        return model;
    }
}
اینم کد ریسایکلرویو:

public class Recycler_View_Adapter extends RecyclerView.Adapter<Recycler_View_Adapter.adapter>{
    private ArrayList<data> data1;
    public Recycler_View_Adapter(ArrayList<data> data) {
        this.data1 = data;
    }

    @Override
    public adapter onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item , parent , false);
        adapter ad = new adapter(v);
        return ad;
    }

    @Override
    public void onBindViewHolder(adapter holder, int position) {
        holder.adad1.setText(data1.get(position).getadad1());
        holder.adad2.setText(data1.get(position).getAdad2());
        holder.am.setText(data1.get(position).getAm());
        holder.javab.setText(data1.get(position).getJavab());
    }

    @Override
    public int getItemCount() {
        return data1.size();
    }

    public class adapter extends RecyclerView.ViewHolder {
        public TextView adad1;
        public TextView adad2;
        public TextView am;
        public TextView javab;
        public adapter(final View itemView) {
            super(itemView);
            adad1 = (TextView)itemView.findViewById(R.id.adad1);
            adad2 = (TextView)itemView.findViewById(R.id.adad2);
            am = (TextView)itemView.findViewById(R.id.am);
            javab = (TextView)itemView.findViewById(R.id.javab);
            adad1.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
            adad2.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
            am.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
            javab.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
            itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    data1.remove(getLayoutPosition());
                    notifyItemRemoved(getAdapterPosition());
                    return false;
                }
            });
        }
    }
    public void add(data d){
        data1.add(d);
        notifyItemInserted(this.data1.size() -1);
    }
}


اینم کلاس data:



public class data {
    public String adad1;
    public String am;
    public String adad2;
    public String javab;

    public String getadad1() {
        return adad1;
    }

    public void setadad1(String adad1) {
        this.adad1 = adad1;
    }

    public String getAdad2() {
        return adad2;
    }

    public void setAdad2(String adad2) {
        this.adad2 = adad2;
    }

    public String getAm() {
        return am;
    }

    public void setAm(String am) {
        this.am = am;
    }

    public String getJavab() {
        return javab;
    }

    public void setJavab(String javab) {
        this.javab = javab;
    }

    public data(String adad1,String am,String adad2,String javab) {
        this.adad1 = adad1;
        this.adad2 = adad2;
        this.am = am;
        this.javab = javab;
    }
}


اینم قسمتی از کد اکتیویتی:



private RecyclerView rc;
ArrayList<data> data1;


rc = (RecyclerView) findViewById(R.id.rc);
data1 = new ArrayList<>();
final Recycler_View_Adapter mAdapter = new Recycler_View_Adapter(data1);
rc.setAdapter(mAdapter);
rc.setLayoutManager(new LinearLayoutManager(this));
RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
itemAnimator.setAddDuration(500);
itemAnimator.setRemoveDuration(500);
rc.setItemAnimator(itemAnimator);


DatabaseHelpher helpher = new DatabaseHelpher(mainpage.this);
helpher.insertIntoDB(String.valueOf(number1),"^",String.valueOf(number2),"=" + String.valueOf(rsl));
data data2 = helpher.getDataFromDB();
mAdapter.add(data2);

 

 

این رو تست کنید

private RecyclerView rc;



DatabaseHelpher helpher = new DatabaseHelpher(mainpage.this);
helpher.insertIntoDB(String.valueOf(number1),"^",String.valueOf(number2),"=" + String.valueOf(rsl));
List<data> data2 = helpher.getALLDataFromDB();
  
rc = (RecyclerView) findViewById(R.id.rc);
final Recycler_View_Adapter mAdapter = new Recycler_View_Adapter(data2);
rc.setAdapter(mAdapter);
rc.setLayoutManager(new LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL,false));

  

 

و متد جدید در کلاس دیتابیستون:

 

 public List<data> getALLDataFromDB(){
        String query = "select * from "+main_table;
   List<data> list=new ArrayList<>();

     

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query,null);
        data model ;
        while (cursor.moveToNext()){
              
                String A1 = cursor.getString(0);
                String AM = cursor.getString(1);
                String A2 = cursor.getString(2);
                String javab = cursor.getString(3);
                model = new data(A1,AM,A2,javab);
                list.add(model);

        }

        return list;
    }
}

 

 

 

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 2 ساعت قبل، Farzad Sarseifi گفته است :

 

این رو تست کنید


private RecyclerView rc;



DatabaseHelpher helpher = new DatabaseHelpher(mainpage.this);
helpher.insertIntoDB(String.valueOf(number1),"^",String.valueOf(number2),"=" + String.valueOf(rsl));
List<data> data2 = helpher.getALLDataFromDB();
  
rc = (RecyclerView) findViewById(R.id.rc);
final Recycler_View_Adapter mAdapter = new Recycler_View_Adapter(data2);
rc.setAdapter(mAdapter);
rc.setLayoutManager(new LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL,false));

  

 

و متد جدید در کلاس دیتابیستون:

 


 public List<data> getALLDataFromDB(){
        String query = "select * from "+main_table;
   List<data> list=new ArrayList<>();

     

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query,null);
        data model ;
        while (cursor.moveToNext()){
              
                String A1 = cursor.getString(0);
                String AM = cursor.getString(1);
                String A2 = cursor.getString(2);
                String javab = cursor.getString(3);
                model = new data(A1,AM,A2,javab);
                list.add(model);

        }

        return list;
    }
}

 

 

 

خیلی ممنونم ازتون.درست شد.ولی یه مشکل کوچیک هست.اونم اینه که وقتی رو باتن کلیک می کنم ریسایکلر ویو به بالا اسکرول داده میشه و باید دوباره بکشیش پایین.وقتی هم اکتیویتی رو باز می کنم ریسایکلر ویو خالیه.باید رو دکمه کلیک کنم تا اطلاعات رو نمایش بده

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط hamidreza.kh
      سلام دوستان خسته نباشید 
      یک ریسایکلر ویو دارم ک خب توش چندتا آیتم هستش و توی این آیتما یه imageView دارم ! 
      این imageView رو میخوام اطلاعات یعنی عکسش رو از سرور بگیرم و در گرفتنش هم مشکلی ندارم 
      فقط مشکلی که هست اینه که این عکسایی که از سرور میگیرم هم ممکنه png باشند و هم svg ! 
      با کتابخونه picasso لود میکنم و فایل های png یا jpg رو باز میکنه ولی فایل svg یا همون وکتور رو باز نمیکنه! 
      راهکاری برای حل این مشکل دارید؟!
    • توسط hamidreza.kh
      سلام خسته نباشید چندتا سوال و درخواست داشتم
      دستورات mysql رو کسی دقیقا میتونه بهم بده؟ مثلا سه تا فرگمنت توی یه اکتیوتی دارم ، میخوام یکیش پست هام رو به ترتیب جدیدترین پست ها بگیره از دیتابیس یا حالا سرور ، تب دوم میخوام همون اطلاعات رو بر حسب مثلا تعداد ویو(بیشترین ها) بهم بده و یه فرگمنت دیگه هم میخوام اونایی که مثلا دیده شده رو نمایش بده !  
      برای مثال اول که مشکلی ندارم همه پست هارو میتونم به ترتیب بگیرم اما برای 2 مثال دیگه اللخصوص مثال دوم یکم گیجم ! ممنون میشم راهنمایی کنید
       
      سوال بعدیم هم اینه ، مثلا کافه بازار حالا که من میخوام مثلا 3 تا فرگمنت رو توی یه اکتیویتی بسازم ، و اطلاعات درونش قرار بدم ، باید برای هر فرگمنت یه آداپتر بسازم دیگه؟که دیتا های خاص هرکدوم رو نشون بده !
      اگه این مسئله درست باشه یه اپی مثل اپ کافه بازار تو قسمت برترین ها 3 تا فرگمنت داره توی یک اکتیویتی ، خب؟ بعد این 3 تا یه عالمه آیتم گرفتن ! چرا اپ کرش نمیشه؟ یا اینکه برای کرش شدن اپ این در حد اون قسمت از اپ کافه بازار ، اون دیتا ها خیلی ناچیز اند؟ و کلا اگه مثلا عکس زیاد داشته باشیم برای بهینه سازی اپ توی فرگمنت های یه اکتیویتی چی رو پیشنهاد میکنید؟
      و سوال اخر اینکه از چه نوع ویو پیجری در مثلا همون قسمت برترین های کافه بازار استقاده شده؟!(fragment view pager یا fragment state view pager)؟ و اینکه چه موقه از این و چه موقه از اون استفاده کنیم؟(لطفا با ذکر مثال بفرمایید)
    • توسط مهندس
      سلام دوستان.
      چجوری میتونم ساعت رو در دیتابیس sqlite ذخیره کنم؟؟
      منظورم اینه ک من یکسری داده دارم میخام وقتی ثبت دیتابیس شد، ساعتی ک کاربر داده رو ثبت میکنه هم در یک فیلد ثبت بشه.
      من یه فیلد با نوع TIME در دیتابیس گذاشتم، اما نمیدونم چجوری و با چه توابعی ساعت رو ذخیره کنم؟؟
      در ضمن راهی هست ک ساعت واقعی ثبت بشه؟؟
      یعنی اینکه اگه یه وقت کاربر ساعت گوشیشو تغییر داد، بازم تایم واقعی time zone ایران ثبت بشه ؟؟؟
    • توسط Majid Ebrahimi
      برای اینکار دو روش وجود دارد:
      1- اینکه عکس را در دیتابیس ذخیره وسپس در برنامه نمایش دهیم.
      2-اینکه نام عکس را در دیتابیس ذخیره و خود تصاویر را در پوشه ریسورس برنامه مثلا در drawable ذخیره و سپس با توجه به نام آن تصویر را در ایمیج ویو لود کنیم.
      ما روش دوم را در این اموزش بررسی خواهیم کرد.
      به کد زیر توجه کنید: ImageView img; Database myDbHelper; SQLiteDatabase db; img = (ImageView) findViewById(R.id.imageView1); db = myDbHelper.getWritableDatabase(); String s = getIntent().getStringExtra("id"); Cursor c = db.rawQuery("select * from student where stu_id = " + id, null); if (c.moveToNext()) { img_name = c.getString(c.getColumnIndex("img")); Log.d("img", img_name); String uri = "drawable/" + img_name; // int imageResource = R.drawable.icon; int imageResource = getResources().getIdentifier(uri, null, getPackageName()); Drawable image = getResources().getDrawable(imageResource); img.setImageDrawable(image); } همانطور که مشخص است بعد از زدن یک کوئری در دیتابیس نام تصویر مربوط به دانشجوی مورد نظر را گرفته و سپس id ایمیج مورد نظر را در ریسورس های برنامه به دست آورده و آن را در ایمیج ویو نشان می دهد.
      امیدوارم این آموزش مقبول افتد.
    • توسط farhad68
      سلام من تازه وارد هستم توی برنامه نویسی اندروید میخوام توی ایکلیپس یه کتاب طراحی کنم ولی می خواستم دیتابیسش انلاین بشه چطوری باید این کارو بکنم دوم اینه به کاربرم بگه نسخه جدید رو دانلود کند

  • دوره آموزشی اندروید ایران کانادا آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios
  • فایل