کلیدستان

نسخه‌ی کامل: مشکل فراخونی دیتابیس (در برنامه نویسی اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام خدمت اساتید محترم.
یه دیتابیس دارم که از سه ستون تشکیل شده ستونها ایدی و عنوان و متن هستید.
تمام مراحل را انجام دادم در لیست ویو عنوان ها ظاهر میشوند که با کلیک روی هر کدوم به عنوان مثال اکتیویتی متن میرم در اکتیویتی متن دو تکست ویو برای نمایش عنوان و متن گذاشتم اما چون تازه کار هستم کدی رو نتونستم پیدا کنم که از دیتای من عنوان و متن رو فراخونی کنه اگه امکان داره در حد آماتور توضیح بدید که مراحل کار چگونه است
با تشکر از همه
دوست عزیز نوشتید تمام مراحل رو انجام دادید..یعنی شما دیتابیس ساختید و میخواهید فقط از داخل آن مقادیر بردارید..یا نه؟
 
سلام.
بله دوست عزیز. همه مراحل رو انجام دادم دیتابیس توی لیست ویو ظاهر میشه میخوام تو یه اکتیویتی به عنوان مثال تکست دو تا تکست ویو دارم با عناوین title , text
توی لیست ویو روی هر کدوم از title ها کلیک کنم به اکتیویتی میرم اما تکست رو بلد نیستم فرا خونی کنم اگه امکان داره دوستان یه نمونه کد بنویسن و توضیح بدن برای آموزش من و دوستای دیگه
اول از همه دوتا آرایه رشته  به صورت سراسری در سطح کلاس تعریف کنید
کد پی‌اچ‌پی:
String []  title;
String  [] name

پس من فرض میکنم شما دیتابیس ساختید و مشکلی ندارید..حال من فرض میکنم دیتابیس شما  2 تا ستون title و name دارد.. ابتدا یه تابع تعریف می کنیم به نام get_values که وظیفه داره مقادیر رو از دیتابیس بگیره و داخل دوتا آرایه قرار بده...
کد پی‌اچ‌پی:
public void get_values()
                {
                  
SQLiteDatabase dataBase=openOrCreateDatabase(pathMODE_PRIVATEnull);    
                        
Cursor cursor;
                        
cursor=dataBase.rawQuery("SELECT title, name FROM T1;"null);
                                
title=new[cursor.getcount]; //ساختن آرایه به اندازه تعداد سطر دیتابیس
                                
name=new[cursor.getcount];
                
int i=0;
                
//این حلقه مقادیر رو از دیتابیس میگیرد و وارد آرایه ها میکند
                 
while(cursor.moveToNext())
                {
                            
title=cursor.getString(cursor.getColumnIndex("title"));
                                       
name=cursor.getString(cursor.getColumnIndex("name"));
                
i++;
                 
                  }
                } 

[i]حالا کافیه این مقادیر رو با کلیک برروی هر آیتم از لیست ویو به اکتیویتی دوم مثلا اکتیوتی secound برود و مقادیر name و title نمایش دهد.
پس برای لیست ویو یک شنونده کلیک شدن آیتم مشخص میکنیم..
[/i]
کد پی‌اچ‌پی:
@Override
                   
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                           long arg3) {
                       Intent intent=new Intent(Main.this,Secound.class);
                       intent.putExtra("title", title[position]);
                       intent.putExtra("name", name[position]);
                       startActivity(intent);
                       
                       
               }); 

[i]در ساختار بالا نکته ی خیلی مهمی که باید بهش توجه کنید..متغیر یا آرگومان سوم هست که position نام دارد.این متغییر شماره آیتمی که کلیک شده است را درخود نگه میدارد...یعنی وقتی آیتم 3کلیک میشود مقدار 3 در متغییر ذخیره میشود...
پس با توجه به این نکته ..وقتی آیتم سوم کلیک میشود ما باید title و name سوم را به اکتیوتی دیگر پاس بدهیم..با کد زیر که در ساختار بالا نوشته شده است.
[/i]
کد پی‌اچ‌پی:
intent.putExtra("title"title[position]);
  
intent.putExtra("name"name[position]); 

[i]درساختار بالا دو رشته به اکتیویتی دیگر پاس دادیم...کافیه این مقادیر ارسالی رو در اکتیویتیsecound بگیریم..با ساختار زیر.در اکتیویتی Secound با دستوارت زیر دومقدر ارسالی را دریافت میکنیم.[/i]
کد پی‌اچ‌پی:
Intent intent=getIntent();
                
String title=intent.getString("title");
                
String name=intent.getString("name"); 

[i]حالا شما میتوانید این دو رشته را در تکست ویوهای خود با متد زیر نمایش دهید.[/i]
کد پی‌اچ‌پی:
my_text1.setText(title);
my_text2.setText(name); 

[i]کدهای بالا رو من دستی همینجا وارد کردم شاید اشتباه نوشتاری داشته باشد..
امیدوارم کمکتون کرده باشم

 

 
[/i]

 

 
اول از همه دوتا آرایه رشته  به صورت سراسری در سطح کلاس تعریف کنید
کد پی‌اچ‌پی:
String [i]  title;
String [iname
پس من فرض میکنم شما دیتابیس ساختید و مشکلی ندارید..حال من فرض میکنم دیتابیس شما  2 تا ستون title و name دارد.. ابتدا یه تابع تعریف می کنیم به نام get_values که وظیفه داره مقادیر رو از دیتابیس بگیره و داخل دوتا آرایه قرار بده...
کد پی‌اچ‌پی:
public void get_values()
{
  
SQLiteDatabase dataBase=openOrCreateDatabase(pathMODE_PRIVATEnull);    
        
Cursor cursor;
        
cursor=dataBase.rawQuery("SELECT title, name FROM T1;"null);
        
title=new[cursor.getcount]; //ساختن آرایه به اندازه تعداد سطر دیتابیس
        
name=new[cursor.getcount];
int i=0;
//این حلقه مقادیر رو از دیتابیس میگیرد و وارد آرایه ها میکند
 
while(cursor.moveToNext())
  {
            
title[i]=cursor.getString(cursor.getColumnIndex("title"));
                       
name[i]=cursor.getString(cursor.getColumnIndex("name"));
   
i++;
 
  }

حالا کافیه این مقادیر رو با کلیک برروی هر آیتم از لیست ویو به اکتیویتی دوم مثلا اکتیوتی secound برود و مقادیر name و title نمایش دهد.
پس برای لیست ویو یک شنونده کلیک شدن آیتم مشخص میکنیم
کد پی‌اچ‌پی:
@Override
                   
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
                       Intent intent=new Intent(Main.this,Secound.class);
                       intent.putExtra("title", title[position]);
                       intent.putExtra("name", name[position]);
                       startActivity(intent);
                       
                       
               }); 
در ساختار بالا نکته ی خیلی مهمی که باید بهش توجه کنید..متغیر یا آرگومان سوم هست که position نام دارد.این متغییر شماره آیتمی که کلیک شده است را درخود نگه میدارد...یعنی وقتی آیتم 3کلیک میشود مقدار 3 در متغییر ذخیره میشود...
پس با توجه به این نکته ..وقتی آیتم سوم کلیک میشود ما باید title و name سوم را به اکتیوتی دیگر پاس بدهیم..با کد زیر که در ساختار بالا نوشته شده است.
کد پی‌اچ‌پی:
intent.putExtra("title"title[position]); 
intent.putExtra("name"name[position]); 
درساختار بالا دو رشته به اکتیویتی دیگر پاس دادیم...کافیه این مقادیر ارسالی رو در اکتیویتیsecound بگیریم..با ساختار زیر.در اکتیویتی Secound با دستوارت زیر دومقدر ارسالی را دریافت میکنیم.
کد پی‌اچ‌پی:
Intent intent=getIntent();
String title=intent.getString("title");
String name=intent.getString("name"); 

حالا شما میتوانید این دو رشته را در تکست ویوهای خود با متد زیر نمایش دهید
کد پی‌اچ‌پی:
my_text1.setText(title);
my_text2.setText(name); 

کدهای بالا رو من دستی همینجا وارد کردم شاید اشتباه نوشتاری داشته باشد..
امیدوارم کمکتون کرده باشم


 
سلام
با تشکر از داش بهروز.
متاسفانه با تلاشهای زیاد موفق نشدم . و ارورهای زیادی داره که در نهایت چیزی توی تکست ویو ها نمایش داده نمیشه اگه امکان داره یه نمونه کار یا سورس برنامه ساده برام بزارید تا هم من و هم بقیه دوستان استفاده کنیم
با تشکر از همه
دوست عزیز کد بالا یه نمونه کد برای حل مشکل شما...اینکه ارورهای زیادی میده.به خاطر اینه که خودتون دیگه باید تطابق بدید با برنامه تون ..مثلا خطی که داره دیتابیس رو باز میکنه..شما باید به جای path ادرس دیتابیس خودتون بزارید..یا مثلا اسم فیلدهاتون جای name و title در ساختار بالا بزارید...اگه مشکل داشتید بپرسید .یا اگه دنباله سورس آماده هستید میتونید با سرچ ساده پیدا کنید...انجمن سعی میکنه به مشکلات افراد رسیدگی کنه..همچنین داخل آموزش کلیدستان به طور کامل این موارد توضیح داده شد.
با تشکر