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

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

در مقاله قبل در مورد پایگاه داده برنامه های اندروید صحبت کردیم و گفتیم پایگاه داده مورد استفاده برنامه های اندرویدی 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);

         }

      }

   }

}

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


بعدی      قبلی

548

بلاگ های مرتبط

ثبت نظر جدید

نظرات کاربران

آیا سوالی دارید ؟

با شماره تلفن های 86085365-021 و86083746-021 و یا 86084238-021 و یا با ایمیل آدرس ایمیل سروش پرداز تماس برقرار کنید.

همچنین از ساعات 9 صبح تا 9 شب می توانید از پشتیبانی آنلاین سروش پرداز بهره مند شوید.


لوگو ساماندهی سروش پرداز