رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام خسته نباشید

من دیتابیسم اماده و داخلی هست دیتابیس رو با کدایی که پایین میبینید مقدارشو توی یک لیست hashmap ریختم و بصورت یک لیست ویو (با استفاده از یک simple adapter) اونو نشون دادم و بدون اشکال و مشکل اجرا میشه برای مثال کد زیر رو اینجا میبینید که بدرستی کار میکنه:

این کدایین که توی کلاس database handler هم است که همون اپن هلپر رو ازش ارث بری کرده

 public List<HashMap<String , Object>> getWords() {

        Cursor cursor=db.rawQuery( "SELECT * FROM " + DB_TBL_WORDS_NAME,null);

        List<HashMap<String , Object>> words=new ArrayList<>();

        while ( cursor.moveToNext() ) {

            HashMap<String , Object> temp=new HashMap<>();

            temp.put("id", cursor.getString(0));
            temp.put("word", cursor.getString(1));
            temp.put("image",cursor.getString(2));

            if (cursor.getString(3).equals("1")) {

                temp.put("see_flag",R.drawable.see);
            }else {
                temp.put("see_flag",R.drawable.not_see);
            }

            if (cursor.getString(4).equals("1")) {

                temp.put("fav_flag",R.drawable.is_favorite);
            }else {
                temp.put("fav_flag",R.drawable.not_favorite);
            }

            words.add(temp);
        }
        return words;
    }

اینم کدایین که توی اون اکتیویتی که میخوام نمایش بدم :

 

public class WordsActivity extends AppCompatActivity {

    private RecyclerView recyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_words);


        setupRecyclerView();
        getWordsFromDB();

    }

    private void setupRecyclerView(){
        recyclerView=(RecyclerView)findViewById(R.id.recycler_view);
        recyclerView.setLayoutManager(new GridLayoutManager(WordsActivity.this,2,LinearLayoutManager.VERTICAL,false));

    }


    private void getWordsFromDB(){
       DatabaseHandler databaseHandler=new DatabaseHandler(this);

        List<Word> words=databaseHandler.getWords();
        TextAdapter wordsAdapter=new TextAdapter(this,words);
        recyclerView.setAdapter(wordsAdapter);

    }

اما مشکل جایی هست که من میخوام اینو توی یک ریسایکلر ویو و مشخصا یه آداپتر کامل بریزم !!! وقتی این کد زیر رو میزارم جای اون قبلیا و روش آداپتر ست میکنم و ریسایکلر ویوم رو،در واقع میگن این query که از دیتابیس میگیرم اون تیبل رو نمیتونه اصلا ایجاد کنه !!! اینم کدش

 

public List<Word> getWords(){

        List<Word> words =new ArrayList<>();

        Cursor cursor=db.rawQuery("SELECT * FROM " +DB_TBL_WORDS_NAME, null);

        cursor.moveToFirst();
        if (cursor.getCount()>0){
            while (!cursor.isAfterLast()){
                Word word=new Word();

                word.setId(cursor.getInt(0));
                word.setTitle(cursor.getString(1));
                word.setImageview(cursor.getString(2));

                words.add(word);
                cursor.moveToNext();
            }
        }
        cursor.close();
        db.close();
        return words;
    }

 

حاالا راه حل چیه باید چیکار کنم؟چرا اینا روی لیست ویو و سیمپل اداپترم میتونم ست کنم اما روی یک ریسایکلر ویو کامل نمیشه و دیتابیس و مشخصا اون تیبل words اصلا ساخته نمیشه؟!

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 4 ساعت قبل، hamidreza.kh گفته است :

سلام خسته نباشید

من دیتابیسم اماده و داخلی هست دیتابیس رو با کدایی که پایین میبینید مقدارشو توی یک لیست hashmap ریختم و بصورت یک لیست ویو (با استفاده از یک simple adapter) اونو نشون دادم و بدون اشکال و مشکل اجرا میشه برای مثال کد زیر رو اینجا میبینید که بدرستی کار میکنه:

این کدایین که توی کلاس database handler هم است که همون اپن هلپر رو ازش ارث بری کرده


 public List<HashMap<String , Object>> getWords() {

        Cursor cursor=db.rawQuery( "SELECT * FROM " + DB_TBL_WORDS_NAME,null);

        List<HashMap<String , Object>> words=new ArrayList<>();

        while ( cursor.moveToNext() ) {

            HashMap<String , Object> temp=new HashMap<>();

            temp.put("id", cursor.getString(0));
            temp.put("word", cursor.getString(1));
            temp.put("image",cursor.getString(2));

            if (cursor.getString(3).equals("1")) {

                temp.put("see_flag",R.drawable.see);
            }else {
                temp.put("see_flag",R.drawable.not_see);
            }

            if (cursor.getString(4).equals("1")) {

                temp.put("fav_flag",R.drawable.is_favorite);
            }else {
                temp.put("fav_flag",R.drawable.not_favorite);
            }

            words.add(temp);
        }
        return words;
    }

اینم کدایین که توی اون اکتیویتی که میخوام نمایش بدم :

 


public class WordsActivity extends AppCompatActivity {

    private RecyclerView recyclerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_words);


        setupRecyclerView();
        getWordsFromDB();

    }

    private void setupRecyclerView(){
        recyclerView=(RecyclerView)findViewById(R.id.recycler_view);
        recyclerView.setLayoutManager(new GridLayoutManager(WordsActivity.this,2,LinearLayoutManager.VERTICAL,false));

    }


    private void getWordsFromDB(){
       DatabaseHandler databaseHandler=new DatabaseHandler(this);

        List<Word> words=databaseHandler.getWords();
        TextAdapter wordsAdapter=new TextAdapter(this,words);
        recyclerView.setAdapter(wordsAdapter);

    }

اما مشکل جایی هست که من میخوام اینو توی یک ریسایکلر ویو و مشخصا یه آداپتر کامل بریزم !!! وقتی این کد زیر رو میزارم جای اون قبلیا و روش آداپتر ست میکنم و ریسایکلر ویوم رو،در واقع میگن این query که از دیتابیس میگیرم اون تیبل رو نمیتونه اصلا ایجاد کنه !!! اینم کدش

 


public List<Word> getWords(){

        List<Word> words =new ArrayList<>();

        Cursor cursor=db.rawQuery("SELECT * FROM " +DB_TBL_WORDS_NAME, null);

        cursor.moveToFirst();
        if (cursor.getCount()>0){
            while (!cursor.isAfterLast()){
                Word word=new Word();

                word.setId(cursor.getInt(0));
                word.setTitle(cursor.getString(1));
                word.setImageview(cursor.getString(2));

                words.add(word);
                cursor.moveToNext();
            }
        }
        cursor.close();
        db.close();
        return words;
    }

 

حاالا راه حل چیه باید چیکار کنم؟چرا اینا روی لیست ویو و سیمپل اداپترم میتونم ست کنم اما روی یک ریسایکلر ویو کامل نمیشه و دیتابیس و مشخصا اون تیبل words اصلا ساخته نمیشه؟!

 

کلاس اداپتری که برای RecyclerView رو نوشتی بزار بررسی کنم

 

 

 

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط aliazmoodeh
      سلام من یه آپی دارم یه قسمت وجود داره که اطلاعات رو از سرور میگیره و تو ریسایکلرویو نمایش میده من میخوام این اطلاعات رو تو حالت افلاین هم داشته باشم یعنی چی یعنی بتونم اطلاعاتی که از سرور گرفتم قبلا رو وقتی کاربر اینترنت بهش نمایش بدم دقیقن مثله تلگرام میگم ولی نمیدونم باید چیکار کنم اگر اموزشی در این رابط دارید بهم بگید یا سورسی دارید بهم بگید پولی یا رایگان باشه برام فرقی نمیکنه فقط میخوام مشکلمو حل کنه
    • توسط scientific
      سلام ، 
      من وقتی در MainActivity یه آبجکت از کلاس مدلم می سازم و داده هام رو به پارامترهای constructor اش می فرستم تا در کلاس مدل ذخیره بشه ،
      و هم زمان اون اطلاعات رو داخل یک لیست از کلاس مدل هم ذخیره می کنم، برنامه م به محض اجرا بسته میشه
      مگر این که کد مربوط به این کار رو کامنت کنم:
      courseModelList.add(new CourseModel(image,s)); یا این که باید کد مربوط به "ست شدن آداپتر به ریسایکلرویو" رو کامنت کنم تا برنامه اجرا بشه:
      recyclerView_course_main.setAdapter(adapterRecyclerView); --------------------------------------------------------------------------------------------------------------------------
      هرکار می کنم ریسایکلرویو رو توی برنامه م نمیتونم نشون بدم
      بریک پوینت هم گذاشتم و لاگ کت رو چک کردم ولی بازم نتونستم ایرادش رو برطرف کنم

      عکسهایی از کد ها و اجرای خط به خط رو میزارم اگه راهنمایی کنید ممنون میشم:
      1-  کلاس MainActivity  متد مربوط به پر کردن لیست آرایه و ست کردن آداپتر:
      private void setupRecyclerView() { courseModelList.add(new CourseModel(image,s)); courseModelList.add(new CourseModel(image,s)); recyclerView_course_main = findViewById(R.id.recyclerView_coursemain); adapterRecyclerView = new AdapterRecyclerView(courseModelList); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); recyclerView_course_main.setLayoutManager(linearLayoutManager); recyclerView_course_main.setAdapter(adapterRecyclerView); } 2- کلاس آداپتر:
      3- کلاس مدل:
      public class CourseModel { private int cuorse_education_icon; private String course_education_title; public CourseModel(int cuorse_education_icon, String course_education_title) { this.cuorse_education_icon = cuorse_education_icon; this.course_education_title = course_education_title; } public int getCuorse_education_icon() { return cuorse_education_icon; } public String getCourse_education_title() { return course_education_title; } 4- کلاس ViewHolder
      import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.donyaeayandeh.itroducingdonyaeayandehinstitute.R; import de.hdodenhof.circleimageview.CircleImageView; public class CourseEducationViewHolder extends RecyclerView.ViewHolder { public CircleImageView course_education_image; public TextView course_education_txt; public CourseEducationViewHolder(@NonNull View itemView) { super(itemView); course_education_image = itemView.findViewById(R.id.course_education_icon); course_education_txt= itemView.findViewById(R.id.course_education_txt); } }  

    • توسط Vahid761
      دوستان سلام . لطفا کمک کنید . راستش من می خواستم یک text view بسازم که وقتی  یک button دستور یک دستور خاصی رو ارسال کنه متن اون text view تغیر کنه که البته تاحدودی هم موفق شدم ولی مشکلی که هست اینه که اون متن جدید   save نمیشه یعنی با یه باز وبسته کردن اپ دورباره برمیگرده به اون متن اولی یعنی می خوام اون متن جدید رو save کنم  دوستان اگه بلدید چطوری حل میشه خواهشا لطفا کمک کنید تا  این مشکل رو حل کنم ....
    • توسط parsdc
      سلام به همه دوستان
      زمانی که سرچ میکنیم در دیتابیس sqlite در لیست نام فارسی، متاسفانه حروف گ چ پ ژ ک بدون ترتیب حروف برمیگردونه، در این مورد تحقیق ها و تست های زیادی کردم، و متوجه شدم کد اسکی این حروف از نظر عددی  نظم ترتیبی ندارد
      لیست حروف فارسی با کد اسکی رو ببینید
      192    ہ
      193    ء
      194    آ
      195    أ
      196    ؤ
      197    إ
      198    ئ
      199    ا
      200    ب
      201    ة
      202    ت
      203    ث
      204    ج
      205    ح
      206    خ
      207    د
      208    ذ
      209    ر
      210    ز
      211    س
      212    ش
      213    ص
      214    ض
      215    ×
      216    ط
      217    ظ
      218    ع
      219    غ
      220    ـ
      221    ف
      222    ق
      223    ك
      224    à
      225    ل
      226    â
      227    م
      228    ن
      229    ه
      230    و
       
      236    ى
      237    ي
       
      129    پ
      141    چ
      142    ژ
      152    ک
      144    گ

      حرف ک عربی 223 هست در جای خودش هست اما ک فارسی 152 هست از عدد حرف آ هم کمتر هست و در سرچ بالاتر از آ قرار میگیره
      سایر حروف مشکل دار هم به همین شکل پ چ ژ ک گ
      کد های utf8 هم بررسی کردم و این مشکل رو داره، واقعا نمیدونم ماکروسافت چیکار کرده که در دیتابیس های اون این مشکل وجود نداره، شما راه حلی اصولی براش نمیشناسید؟
    • توسط Javad Mahmoodi
      سلام
      من میخوام تمام اطلاعات ذخیره شده در برنامه ام را که در sqlite هست رو با زدن دکمه ارسال و بصورت یکجا به دیتابیس sql server ارسال کنم.
      کانکشن رو بین برنامم و sql server  که توسط کتابخانه jdbc هست ایجاد کردم.
      الان مشکلم این هست که چجوری تمام اطلاعات رو مستقیم و فقط با زدن دکمه ارسال به sql server ارسال کنم.
      ممنون میشم راهنمایی فرمایید(ترجیحاً با کد)
  • فایل

×
×
  • اضافه کردن...