ارسال اطلاعات از دیتابیس به GridView + سورس

به نام خدا،در این جلسه  میخواهیم با مقدار دهی به GridView از طریق دیتابیس sqlite آشنا بشیم در قالب یک پروژه ثبت نام دانش آموزان.برای شروع کار یک پروژه جدید ایجاد میکنم.در لایه اصلی برنامه activity_main.xml از عناصر گرافیکی مثل Button,EditText و TextView استفاده کرده ایم.این اکتیویتی وظیفه دریافت اطلاعات از کاربر و ذخیره سازی در دیتابیس و نمایش رو بر عهده داره.(کدهای کامل لایه activity_main.xml).

 <?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
<Button 
android:id="@+id/DisplayButton" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignBaseline="@+id/InsertButton" 
android:layout_alignBottom="@+id/InsertButton" 
android:layout_marginLeft="44dp" 
android:layout_toRightOf="@+id/InsertButton" 
android:text="Display" /> 
<TextView 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_alignParentTop="true" 
android:text="Student Name" 
android:textAppearance="?android:attr/textAppearanceMedium" /> 
<EditText 
android:id="@+id/NameEditText" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_alignParentRight="true" 
android:layout_below="@+id/textView1" 
android:layout_marginTop="18dp" 
android:ems="10" /> 
<TextView 
android:id="@+id/textView2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_below="@+id/NameEditText" 
android:text="Roll No" 
android:textAppearance="?android:attr/textAppearanceMedium" /> 
<EditText 
android:id="@+id/RollEditText" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_alignParentRight="true" 
android:layout_below="@+id/textView2" 
android:layout_marginTop="24dp" 
android:ems="10" /> 
<TextView 
android:id="@+id/textView3" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_below="@+id/RollEditText" 
android:text="Major Course" 
android:textAppearance="?android:attr/textAppearanceMedium" /> 
<EditText 
android:id="@+id/CourseEditText" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_alignParentRight="true" 
android:layout_below="@+id/textView3" 
android:layout_marginTop="19dp" 
android:ems="10" > 
<requestFocus /> 
</EditText> 
<Button 
android:id="@+id/InsertButton" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentBottom="true" 
android:layout_marginBottom="58dp" 
android:layout_toRightOf="@+id/textView2" 
android:text="Insert" /> 
</RelativeLayout>  

برای اینکه ما بتونیم اطلاعات ذخیره شده در دیتابیس رو بعد از ذخیره سازی نمایش بدیم،نیاز داریم که یک اکتویتی جدید ایجاد کنیم.تا اطلاعات وارد شده به دیتابیس رو بتونیم نمایش بدیم.برای اینکار یک اکتیویتی جدید به  نام gridview.xml ایجاد کرده و کدهای زیر رو بهش اضافه می کنم.(با ساخت اکتیویتی جدید در این آموزش آشنا شدیم.)

 <?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
<TextView 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_alignParentTop="true" 
android:text="Name" 
android:textAppearance="?android:attr/textAppearanceLarge" /> 
<TextView 
android:id="@+id/textView2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentTop="true" 
android:layout_centerHorizontal="true" 
android:text="Roll" 
android:textAppearance="?android:attr/textAppearanceLarge" /> 
<TextView 
android:id="@+id/textView3" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentRight="true" 
android:layout_alignParentTop="true" 
android:text="Course" 
android:textAppearance="?android:attr/textAppearanceLarge" /> 
<GridView 
android:id="@+id/gridView1" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_below="@+id/textView1" 
android:fastScrollAlwaysVisible="true" 
android:fastScrollEnabled="true" 
android:numColumns="3" > 
</GridView> 
</RelativeLayout>  

بعد از ساخت لایه های برنامه نوبت میرسه به نوشتن کدهای جاوا و ایجاد دیتابیس.ابتدا کلاس MainActivity.java رو اجرا میکنم.در داخل این کلاس تمامی عناصر گرافیکی برنامه رو که شامل EditText,Button هست رو معرفی میکنم.برای دکمه insert یک  رویداد کلیک ایجاد میکنم،با کلیک بر روی دکمه اطلاعاتی که از EditText ها دریافت میکنم رو از طریق دستور toString به یک رشته تبدیل میکنم.سپس با ایجاد یک handler دیابیس رو باز کرده و اطلاعاتی که از EditText  گرفتیم رو ذخیره میکنم.(کدهای کلاس MainActivity.java).

 /*
* Appinapps.com
* آموزش برنامه نویسی
* اپ این اپس
*/
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

//Data members 
private EditText nameEditText; 
private EditText rollEditText; 
private EditText courseEditText; 
private Button insertButton; 
private Button displayButton; 
//معرفی شی از کلاس DatabaseHandler 
DatabaseHandler handler; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
//فراخوانی عناصر گرافیکی از لایه
nameEditText=(EditText) findViewById(R.id.NameEditText); 
rollEditText=(EditText) findViewById(R.id.RollEditText); 
courseEditText=(EditText) findViewById(R.id.CourseEditText); 
insertButton=(Button) findViewById(R.id.InsertButton); 
displayButton=(Button) findViewById(R.id.DisplayButton); 
//رویداد کلیک برای دکمه insert
insertButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
String name=nameEditText.getText().toString(); 
String roll=rollEditText.getText().toString(); 
String course=courseEditText.getText().toString(); 
handler=new DatabaseHandler(getBaseContext()); 
handler.open(); 
long id=handler.InsertData(name, roll, course); 
Toast.makeText(getBaseContext(), "Your data in  inserted",Toast.LENGTH_LONG).show(); 
nameEditText.setText(""); 
rollEditText.setText(""); 
courseEditText.setText(""); 
handler.close(); 
} 
}); 
displayButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
Intent i=new Intent(MainActivity.this,GridViewActivity.class); 
startActivity(i);//استارت اکتیویتی گرید ویو برای نمایش رکوردها 
} 
}); 
} 
} 

سپس به یک کلاس جدید نیاز داریم تا بتونیم  اطلاعات وارد شده از اکتیویتی اول رو ذخیره و در اکتیویتی دوم نمایش بدیم.نام این کلاس رو DatabaseHandler قرار میدیم.در داخل این کلاس تعدادی متغیر برای ایجاد در دیتابیس درست میکنم.متد onCreate اگر بانک اطلاعاتی موجود نباشد آن را ایجاد میکند.متد onUpgrade هنگامی که بانک اطلاعاتی نیاز به بروز رسانی داشته باشد فراخوانی می گردد.این موضوع از طریق متغیر ثابت DATABASE_VERSION به دست می آید.در پیاده سازی متد onUpgrade  کافیست جدول را حذف و دوباره ایجاد کنیم.

با توجه به این که اندروید از طریق کلاس  Cursor  اقدام به برگرداندن نتیجه استعلام ها میکند.تصور کنید که Cursor همانند یک نشانگر است که به نتیجه استعلام شما اشاره دارد.استفاده از Cursor در اندروید مدیریت ردیف ها،ستون ها را بسیار کار آمدتر کرده است.از یک شی ContentValues برای ذخیره اطلاعات در قالب کلید مقدار بهره میبریم.متد put،این شی قابلیت افزودن کلید و مقدار را در انواع مختلف داده ای به برنامه میدهد.(کدهای کلاسDatabaseHandler ).

 /*
* Appinapps.com
* آموزش برنامه نویسی
* اپ این اپس
*/
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHandler 
{ 
//متغیر ها 
public static final String NAME="name"; 
public static final String ROLL="roll"; 
public static final String COURSE="course"; 
public static final String TABLE_NAME="studenttable"; 
public static final String DATABASE_NAME="studentdb"; 
public static final int DATABASE_VERSION=1; 

public static final String TABLE_CREATE="create table studenttable(name text not  null, roll text not null, course text not null);"; 

DataBaseHelper dbhelper; 
Context context; 
SQLiteDatabase db; 

public DatabaseHandler(Context ctx) 
{ 
this.context=ctx; 
dbhelper=new DataBaseHelper(context); 
} 
private static class DataBaseHelper extends SQLiteOpenHelper 
{ 
//ساخت و مدیریت دیتابیس 
public DataBaseHelper(Context ctx) 
{ 
super(ctx,DATABASE_NAME,null,DATABASE_VERSION); 
} 
@Override 
//Called when the database is created for the first time. 
public void onCreate(SQLiteDatabase db) 
{ 
db.execSQL(TABLE_CREATE);//Here create a table 
} 
@Override 
//Called when the database needs to be upgraded. 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
db.execSQL("DROP TABLE IF EXIST studenttable"); 
onCreate(db); 
} 
} 
public DatabaseHandler open() 
{ 
//Create and/or open a database that will be used for reading and writing. 
db=dbhelper.getWritableDatabase(); 
return this; 
} 
public void close() 
{ 
//Close any open database object. 
dbhelper.close(); 
} 
//افزودن رکوردها به دیتابیس 
public long InsertData(String name, String roll,String course) 
{ 
//ذخیره سازی 
ContentValues content=new ContentValues(); 
content.put(NAME, name); 
content.put(ROLL, roll); 
content.put(COURSE, course); 
return db.insertOrThrow(TABLE_NAME,null, content); 
} 
//نمایش رکوردها از دیتابیس 
public Cursor DisplayData() 
{ 
//queryانتخاب 
return db.rawQuery("SELECT * FROM studenttable", null); 
//return db.query(TABLE_NAME, new String[]{NAME, ROLL,COURSE}, null, null, null,  null, null); 
} 
} 

سپس در مرحله آخر کلاس  GridViewActivity اجرا کرده و کدهای زیر رو بهش اضافه  میکنم.در داخل این کلاس اطلاعات دریافتی از Database رو میفرته به یک گرید ویو GridView جهت نمایش به کاربر.در این کلاس اطلاعات وارده ز طریق دیتابیس رو با استفاده از ArrayList به گرید ویو متصل میکنه.(کدهای کلاس GridViewActivity)

 /*
* Appinapps.com
* آموزش برنامه نویسی
* اپ این اپس
*/
import java.util.ArrayList;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.Toast;

public class GridViewActivity extends Activity 
{ 
private GridView gridView; 
private ArrayList<String> list; 
private ArrayAdapter<String> adapter; 
DatabaseHandler handler; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.gridview); 
//GridView 
gridView=(GridView) findViewById(R.id.gridView1); 
//ArrayList 
list=new ArrayList<String>(); 
adapter=new  ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_spinner_item,list); 
String name, roll, course; 
name=""; 
roll=""; 
course=""; 
handler=new DatabaseHandler(getBaseContext());//getting the context object 
handler.open(); 
try 
{ 
//دریافت اطلاعات از query ها و ذخیره سازی اون در جدول ها 
Cursor c=handler.DisplayData(); 
//Move the cursor to the first row. 
if(c.moveToFirst()) 
{ 
do 
{ 
name=c.getString(c.getColumnIndex("name")); 
roll=c.getString(c.getColumnIndex("roll")); 
course=c.getString(c.getColumnIndex("course")); 
//اضافه کردن به ArrayList 
list.add(name); 
list.add(roll); 
list.add(course); 
gridView.setAdapter(adapter); 
}while(c.moveToNext());//حرکت کورس به جدول بعدی. 
} 
else 
{ 
Toast.makeText(getApplicationContext(), "No data found",  Toast.LENGTH_LONG).show(); 
} 
}catch(Exception e) 
{ 
Toast.makeText(getApplicationContext(), "No data found"+e.getMessage(),  Toast.LENGTH_LONG).show(); 
} 
handler.close(); 
} 
}  

سورس کامل این آموزش را از این لینک دانلود کنید.


فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد

نظرات شما نظر جدید
سایر مقالات این دسته
تاریخچه و خصوصیات اندرویداجزای تشکیل دهنده سیستم عامل اندرویدآشنایی با API های اندرویدایجاد،ساخت و اجرای اولین برنامه اندرویدیکار با دکمه ها در اندرویدکار با تکست باکس ها در اندرویدکار با تکست ویو در اندرویدکار با گرید ویو در اندرویدکار با وب ویو در اندرویدکار با اسکرول ویو در اندرویدکار با اسکرول ویو افقیکار با الرت دیالوگ (AlertDialog)در اندرویدکار با ایمیج باتن(Image Button) در اندرویدکار با توگل باتنکار با چک باکس (Checkbox) در اندرویدکار با الرت دیالوگ (AlertDialog)در اندروید قسمت دوکار با ریتینگ بار(Rating bar) در اندرویدرفتن از یک اکتویتی به اکتویتی دیگرکار با نوتیفیکیشن ها (Notifications )در اندرویدکار با صوت در برنامه نویسی اندرویدکار با ویبره(Vibrator) در اندرویدکار با دوربین در اندرویدکار با دوربین در اندرویدکار با ویدیو ویو (VideoView)در اندرویدکار با شبکه وای فای (Wifi)در اندرویدکار با لیست ویو (ListView) در اندرویدکار با سیک بار (SeekBar) در اندرویدکار با دکمه بازگشت در اندرویدکار با AutoCompleteTextView در اندرویدتغییر فونت در اندرویدکار با لایه TableLayout در اندرویدکار با لیست کشویی (Spinner) در اندرویدکار با CalendarView در اندرویدساخت شمارنده در اندرویدکار با title bar در اندرویدکار با منو (Menu)در اندرویدکار با لیست ویو (Listview) قسمت دومطراحی رابط کاربری در اندروید قسمت اولطراحی رابط کاربری در اندروید قسمت دوم(طراحی گرد)کار با استایل در اندرویدکار با لایه AbsoluteLayout در اندرویدطراحی رابط کاربری در اندروید کار با gradientکار با کلیپ بورد(ClipBoard)در اندروید کار با مولتی تاچ(Multitouch ) در اندروید+سورس کدکار با OnLongClick در اندرویدکار با منوی زمینه (ContextMenu ) در اندرویدکار با حرکات (Gesture) در اندرویدکار با (AudioCapture) در اندروید+سورس کدکار با موتور Speech در اندروید + سورسکار با PhoneCall در اندرویدساخت لیست ویو سفارشی در اندروید+سورسساخت Toastسفارشی در اندرویدانتقال برنامه به حافظه sdکار با TextWatcher در اندروید+سورستغییر رنگ محیط Eclipse طراحی رابط کاربری در اندروید کار با Canvasساخت اکشن بار سفارشی در اندروید+سورسساخت الرت دیالوگ سفارشی در اندرویدساخت برنامه نمایش مقدار شارژ باتری در اندرویدایجاد افکت رنگی بروی تصاویر در اندروید+سورسساخت آپشن منوی سفارشی در اندروید+سورسساخت دکمه سه بعدی با Selectorسخنان بزرگان برنامه نويسيوارد كردن پروژه در محيط ايكليپساضافه کردن switch,case به لیست ویوبارش برف بروی تصویر + سورسکار با فیلتر hue رنگی کردن تصویر انتخاب و پخش فایل صوتی از حافظه گوشی+سورساضافه کردن چک باکس به لیست ویوکار با ShelfView یا نمایش کتابخانه ای + سورسکار با TabHost،اضافه کردن تب به برنامه های اندرویدآموزش کامل ساخت اکشن بار سفارشی+سورسساخت برنامه های واکنش گرا(ریسپانسیو) در اندرویدقسمت دوم صفحات 7 اینچ به بالااضافه کردن انیمیشن به دکمه+سورسکار با View Switcher در اندروید + سورسکار با فیلتر Blur Mask + سورسدانلود پک کامل آیکون های طراحی اندرویدکار با sharedPreferences در اندروید+سورسآموزش کار با proguard،محافظت از برنامه اندرویدپخش فایل صوتی (MP3) از ادرس اینترنتی+سورسپخش ویدیو از آدرس اینترنتی(URL) در اندروید+سورسگوشی های و تبلت های مطرح تا چینی به ساده ترین روشپاسخ به رویداد های WebVeiw دسترسی به وب ویو با استفاده از جاوااسکریپتکار با WIFI اکسس+سورسساخت تقویم هجری برای اندروید+سورسapp rateدانلود و نمایش تصویر در ListView+سورسدانلود و نمایش فایل متنی+سورسکار با کلاس های پایه اکتیویتیآینه کردن تصویر+سورسافزودن آیتم منو سفارشی بهActionBar+سورسارسال اطلاعات از دیتابیس به GridView + سورسدسترسی به Api هایREST قسمت اولتغییر فونت لیست ویوفعال سازی و معرفی بخش های Android developer options بخش اول کار با JSON در اندرویدآموزش ساده نصب شبیه ساز اندروید Genymotion