sorooshpardaz

برنامه نویسی اندروید: آموزش پایگاه داده SQLite (قسمت دوم)

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

در مقاله قبل در مورد پایگاه داده برنامه های اندروید صحبت کردیم و گفتیم پایگاه داده مورد استفاده برنامه های اندرویدی Sqlite می باشد، مولفه های مختلف Sqlite را معرفی کردیم در این مقاله یک نمونه مثال از این پایگاه داده را به همراه کدهای آن توضیح می دهیم.

مثال استفاده شده ساخت یک پایگاه داده برای ذخیره مخاطبین تلفن همراه است با استفاده از این پایگاه داده می توان اطلاعات تماس تلفن همراه را درج، حذف، ویرایش کرد.

برای تست این مثال می بایست آن را روی دستگاه واقعی دوربین دار تست کنید.

با استفاده از اندروید استودیو یک برنامه  کاربردی تحت عنوان com.example.sairamkrishna.myapplication بسازیم.

برای ساخت این برنامه و پایگاه داده به ترتیب مراحل زیر را انجام می دهیم:

1.برای ساخت این پروژه مطمئن شوید که اندروید SDK از آخرین نسخه پشتیبانی کند تا با  API های نسخه بالا همخوانی داشته باشند.

2.فایل SRC/MainActivity.java را می گذاریم تا توسط آن همه مولفه های XML و اخرین تماس ها را دریافت کند.

Src/DBHelper.java.3 را می سازیم، که عملکرد دیتابیس را مدیریت می کند.

4.یک مولفه جدید با عنوان  DisplayContact.java ایجاد می کنیم تا تماس های روی صفحه را نمایش دهد.

5.تغییر res/layout/activity_main و res/layout/activity_display_contact.xml که برای اضافه شدن مولفه های xml است.

6.تغییر فایل res/values/string.xml برای افزودن اجزای رشته ای ضروری است.

7.قرار دادن فایل res/menu/display_contact.xml برای ایجاد منوهای ضروری

8.ایجاد منو res/menu/mainmenu.xml برای قرار دادن امکان درج مخاطب

9.اجرای نرم افزار بر روی یک دستگاه اندرویدی و نصب برنامه روی آن

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

 محتوای MainActivity.java. را با استفاده از کدهای زیر ویرایش می کنیم.


 

package com.example.sairamkrishna.myapplication;

import android.content.Context;

import android.content.Intent;

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;


import android.view.KeyEvent;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;


import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;


import java.util.ArrayList;

import java.util.List;


public class MainActivity extends ActionBarActivity {

   public final static String EXTRA_MESSAGE = "MESSAGE";

   private ListView obj;

   DBHelper mydb;

  

   @Override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

     

      mydb = new DBHelper(this);

      ArrayList array_list = mydb.getAllCotacts();

      ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list);

     

      obj = (ListView)findViewById(R.id.listView1);

      obj.setAdapter(arrayAdapter);

      obj.setOnItemClickListener(new OnItemClickListener(){

         @Override

         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

            // TODO Auto-generated method stub

            int id_To_Search = arg2 + 1;

           

            Bundle dataBundle = new Bundle();

            dataBundle.putInt("id", id_To_Search);

           

            Intent intent = new Intent(getApplicationContext(),DisplayContact.class);

           

            intent.putExtras(dataBundle);

            startActivity(intent);

         }

      });

   }

  

   @Override

   public boolean onCreateOptionsMenu(Menu menu) {

      // Inflate the menu; this adds items to the action bar if it is present.

      getMenuInflater().inflate(R.menu.menu_main, menu);

      return true;

   }

  

   @Override

   public boolean onOptionsItemSelected(MenuItem item){

      super.onOptionsItemSelected(item);

     

      switch(item.getItemId())

      {

         case R.id.item1:Bundle dataBundle = new Bundle();

         dataBundle.putInt("id", 0);

        

         Intent intent = new Intent(getApplicationContext(),DisplayContact.class);

         intent.putExtras(dataBundle);

        

         startActivity(intent);

         return true;

         default:

         return super.onOptionsItemSelected(item);

      }

   }

  

   public boolean onKeyDown(int keycode, KeyEvent event) {

      if (keycode == KeyEvent.KEYCODE_BACK) {

         moveTaskToBack(true);

      }

      return super.onKeyDown(keycode, event);

   }

}

 

در زیر محتوای فایل DisplayContact.java برای تطبیق با برنامه اصلاح شده است:


 

package com.example.addressbook;


import android.os.Bundle;

import android.app.Activity;

import android.app.AlertDialog;


import android.content.DialogInterface;

import android.content.Intent;

import android.database.Cursor;


import android.view.Menu;

import android.view.MenuItem;

import android.view.View;


import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;


public class DisplayContact extends Activity {

   int from_Where_I_Am_Coming = 0;

   private DBHelper mydb ;

  

   TextView name ;

   TextView phone;

   TextView email;

   TextView street;

   TextView place;

   int id_To_Update = 0;

  

   @Override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_display_contact);

      name = (TextView) findViewById(R.id.editTextName);

      phone = (TextView) findViewById(R.id.editTextPhone);

      email = (TextView) findViewById(R.id.editTextStreet);

      street = (TextView) findViewById(R.id.editTextEmail);

      place = (TextView) findViewById(R.id.editTextCity);


      mydb = new DBHelper(this);


      Bundle extras = getIntent().getExtras();

      if(extras !=null)

      {

         int Value = extras.getInt("id");

        

         if(Value>0){

            //means this is the view part not the add contact part.

            Cursor rs = mydb.getData(Value);

            id_To_Update = Value;

            rs.moveToFirst();

           

            String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME));

            String phon = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_PHONE));

            String emai = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_EMAIL));

            String stree = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_STREET));

            String plac = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_CITY));

           

            if (!rs.isClosed())

            {

               rs.close();

            }

            Button b = (Button)findViewById(R.id.button1);

            b.setVisibility(View.INVISIBLE);


            name.setText((CharSequence)nam);

            name.setFocusable(false);

            name.setClickable(false);


            phone.setText((CharSequence)phon);

            phone.setFocusable(false);

            phone.setClickable(false);


            email.setText((CharSequence)emai);

            email.setFocusable(false);

            email.setClickable(false);


            street.setText((CharSequence)stree);

            street.setFocusable(false);

            street.setClickable(false);


            place.setText((CharSequence)plac);

            place.setFocusable(false);

            place.setClickable(false);

         }

      }

   }

  

   @Override

   public boolean onCreateOptionsMenu(Menu menu) {

      // Inflate the menu; this adds items to the action bar if it is present.

      Bundle extras = getIntent().getExtras();

     

      if(extras !=null)

      {

         int Value = extras.getInt("id");

         if(Value>0){

            getMenuInflater().inflate(R.menu.display_contact, menu);

         }

        

         else{

            getMenuInflater().inflate(R.menu.main, menu);

         }

      }

      return true;

   }


   public boolean onOptionsItemSelected(MenuItem item)

   {

      super.onOptionsItemSelected(item);

      switch(item.getItemId())

   {

      case R.id.Edit_Contact:

      Button b = (Button)findViewById(R.id.button1);

      b.setVisibility(View.VISIBLE);

      name.setEnabled(true);

      name.setFocusableInTouchMode(true);

      name.setClickable(true);


      phone.setEnabled(true);

      phone.setFocusableInTouchMode(true);

      phone.setClickable(true);


      email.setEnabled(true);

      email.setFocusableInTouchMode(true);

      email.setClickable(true);


      street.setEnabled(true);

      street.setFocusableInTouchMode(true);

      street.setClickable(true);


      place.setEnabled(true);

      place.setFocusableInTouchMode(true);

      place.setClickable(true);


      return true;

      case R.id.Delete_Contact:


      AlertDialog.Builder builder = new AlertDialog.Builder(this);

      builder.setMessage(R.string.deleteContact)

      .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {

         public void onClick(DialogInterface dialog, int id) {

            mydb.deleteContact(id_To_Update);

            Toast.makeText(getApplicationContext(), "Deleted Successfully", Toast.LENGTH_SHORT).show(); 

            Intent intent = new Intent(getApplicationContext(),MainActivity.class);

            startActivity(intent);

         }

      })

      .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {

         public void onClick(DialogInterface dialog, int id) {

            // User cancelled the dialog

         }

      });

      AlertDialog d = builder.create();

      d.setTitle("Are you sure");

      d.show();


      return true;

      default:

      return super.onOptionsItemSelected(item);


      }

   }


   public void run(View view)

   {   

      Bundle extras = getIntent().getExtras();

      if(extras !=null)

      {

         int Value = extras.getInt("id");

         if(Value>0){

            if(mydb.updateContact(id_To_Update,name.getText().toString(), phone.getText().toString(), email.getText().toString(), street.getText().toString(), place.getText().toString())){

               Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show();

               Intent intent = new Intent(getApplicationContext(),MainActivity.class);

               startActivity(intent);

            }         

            else{

               Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show();   

            }

         }

         else{

            if(mydb.insertContact(name.getText().toString(), phone.getText().toString(), email.getText().toString(), street.getText().toString(), place.getText().toString())){

               Toast.makeText(getApplicationContext(), "done", Toast.LENGTH_SHORT).show(); 

            }         

           

            else{

               Toast.makeText(getApplicationContext(), "not done", Toast.LENGTH_SHORT).show();   

            }

            Intent intent = new Intent(getApplicationContext(),MainActivity.class);

            startActivity(intent);

         }

      }

   }

}

در مقاله بعدی می توانید ادامه آموزش را دنبال کنید.

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


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

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط asd_60
      با سلام ،اینجانب بر ای یک پروژه نیاز به همکاری با برنامه نویس اندروید آشنا به wifi و انتقال صوت (voice over wifi)را دارم.  این همکاری در غالب پروژه با دستمزد تعیینی از طرف برنامه نویس می باشد.
      احسان نیری e.nairy@gmail.com
    • توسط saeed_sh


       
      سلام دوستان وقت بخیر
      من برنامه نویس مبتدی اندروید هستم
      میخوام یه صفحه مثل همین گیف رو که تهیه کردم رو درست کنم اما نمیدونم از کجا شروع کنم و از چه روش هایی استفاده کنم
      خودم فک میکنم باید با  custom listView اینکارو انجام بدم اما چون میخوام امکاناتی مثل ستاره دار کردن یا share کردن رو بهش اضافه کنم فک میکنم خیلی سنگین میشه
      راه ساده تری واسه ساختنش نیست ؟
      اگه میشه یکم توضیح بدین ومسیر ساختشو بگین تا یکم روش ساختش دستم بیاد (در ضمن اهنگ هایی  ک میخوام پخش شه داخل خود برنامه میخوام قرار بدم )
      ممنون
    • توسط کانون تابان شهر
       
      تاپیک ویرایش شد
      تبلیغ غیر مجاز
       
    • توسط Omid Zakeri
      این فریمورک مختص اندروید طراحی نشده ولی سبک بودن آن موجب شده‌است که بسیاری از برنامه نویسان از آن در برنامه‌های اندرویدی استفاده کنند. این فریم ورک جهت اتصالات JDBC وSpring و اندروید طراحی شده است.
       
       
      @DatabaseTable(tableName = "users") public class User { @DatabaseField(id = true) private String username; @DatabaseField private String password; public User() { // ORMLite needs a no-arg constructor } public User(String username, String password) { this.username = username; this.password = password; } // Implementing getter and setter methods public String getUserame() { return this.username; } public void setName(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } }
    • توسط Omid Zakeri
      با آمدن ORM‌ها به دنیای برنامه نویسی، کار برنامه نویسی نسبت به قبل ساده‌تر و راحت‌تر شد. عدم استفاده کوئری‌های دستی، پشتیبانی از چند دیتابیس و از همه مهمتر و اصلی‌ترین هدف این ابزار "تنها درگیری با اشیا و مدل شیء گرایی" کار را پیش از پیش آسان‌تر نمود.
      در این بین به راحتی می‌توان چندین نمونه از این ORM‌ها را  نام برد مثل IBatis , Hibernate ,Nhibernate و EF که از معروفترین آن‌ها هستند.
      من در حال حاضر قصد شروع یک پروژه اندرویدی را دارم و دوست دارم بجای استفاده‌ی از Sqlitehelper، از یک ORM مناسب بهره ببرم که چند سوال برای من پیش می‌آید. آیا ORM ای برای آن تهیه شده است؟ اگر آری چندتا و کدامیک از آن‌ها بهتر هستند؟ شاید در اولین مورد کتابخانه‌ی Hibernate جاوا را نام ببرید؛ ولی توجه به این نکته ضروری است که ما در مورد پلتفرم موبایل و محدودیت‌های آن صحبت می‌کنیم. یک کتابخانه همانند Hibernate مطمئنا برای یک برنامه اندروید چه از نظر حجم نهایی برنامه و چه از نظر حجم بزرگش در اجرا، مشکل زا خواهد بود و وجود وابستگی‌های متعدد و دارا بودن بسیاری از قابلیت‌هایی که اصلا در بانک‌های اطلاعاتی موبایل قابل اجرا نیست، باعث می‌شود این فریمورک انتخاب خوبی برای یک برنامه اندروید نباشد.

      معیارهای انتخاب یک فریم ورک مناسب برای موبایل: 
      سبک بودن: مهمترین مورد سبک بودن آن است؛ چه از لحاظ اجرای برنامه و چه از لحاظ حجم نهایی برنامه سریع بودن: مطمئنا ORM‌های طراحی شده‌ی موجود، از سرعت خیلی بدی برخوردار نخواهند بود؛ اگر سر زبان هم افتاده باشند. ولی باز هم انتخاب سریع بودن یک ORM، مورد علاقه‌ی بسیاری از  ماهاست. یادگیری آسان و کانفیگ راحت تر. greenDAO-master.zip

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