برمجة Android - إستخدام قواعد البيانات (بتاريخ : 18/1/2014)

سنتناول في هذا الدرس طريقة إستخدام قواعد البيانات في برامجنا التي نطورها لنظام آندرويد. سأركز في هذا الدرس إن شاء الله على الفئات والدوال الأساسية التي نحتاجها للتعامل مع قواعد البيانات، وبالتالي لن أبني مثالاً متكاملاً في هذا الدرس روماً للإختصار و البساطه، قد أطرح في درس آخر إن شاء الله مثالاً متكاملاً يستخدم قواعد البيانات وقوائم ListView التي تحدثت عنها مُسبقاً في عدد من الدروس إن شاء الله (هنا وهنا وهنا وهنا).

يأتي نظام آندرويد بشكل إفتراضي مع محرك قواعد البيانات SQLite وبالتالي يُمكنك إستخدامه في برنامجك لتخزين البيانات والتعامل معها من خلال لغة SQL. لإستخدام قواعد البيانات في برنامجنا سنتعامل بشكل أساسي مع فئتين وهما :SQLiteOpenHelper وSQLiteDatabase بالطبع مع مساعدة عدد من الفئات التي ستراها خلال هذا الدرس إن شاء الله.

كما أسلفت، بهدف إختصار الدرس وتبسيطه لن أبني هنا واجهة مُستخدم رسومية لطرح الأمثله، بل سأكتفي بإستخدام الداله i المُتوفره في الفئة Log، تقوم هذه الدالة بطباعة الرسائل التي تُمرر لها على إنها معلومات (الحرف i هنا إختصار لـ Information) وفي واجهة Eclipse ستُطبع هذه الرسائل في تبويب LogCat. يفترض هذا الدرس إنّك تعاملت مسبقاً مع قواعد البيانات ولك علم بمفاهيمها وكيفية إستخدام لغة SQL.

لنبدأ بإسم الله:

الفئة SQLiteOpenHelper
الخطوه الأولى في إستخدام قواعد البيانات في برامجنا هو إنشاء ... اكمل القراءه

برمجة Android - خاصية البحث لقوائم ListView المُتقدمه (بتاريخ : 18/9/2013)

نستكمل اليوم ما بدأناه من دروس حول ListView، تحدثنا في الدرس السابق عن طريقة إضافة خاصيّة البحث لقوائم ListView و أعتمدنا في درسنا السابق على القوائم البسيطة، السؤال الذي يطرح نفسه بعد ذلك الدرس هو كيفية بناء نفس هذه الخاصية ولكن للقوائم المُتقدمه والتي يحتوي صفّها الواحد على أكثر من حقل معلومات، مثل التي بنيناها في درس بناء قوائم ListView مُتقدمه، في هذا الدرس إن شاء الله سنناقش هذا الموضوع.

أولاً، أفترض إنّك قد قرأت الدرس بناء قوائم ListView مُتقدمه و فهمته لأنني سأعتمد عليه وسأُكمل على الشيفره التي قمنا بكتابتها في ذلك الدرس، إن لم تكن قد قرأته يجب قراءته أولاً حتى تتمكن من إستيعاب هذا الدرس بشكل جيد.

الشيفرة التي سنعتمد عليها هي التاليه، وهي نفس شيفرة ذلك الدرس :

package com.maastaar.androidtutorials;

import java.util.ArrayList;
import java.util.Iterator;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

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

ListView listView = (ListView) findViewById( R.id.listView1 );
Button btnOK = (Button) findViewById( R.id.button1 );

// ... //

final PersonsAdapter personsAdapter = new PersonsAdapter( this );

personsAdapter.add( new ... اكمل القراءه

الطبعة الثانية من كتاب "بناء التطبيقات مع Python بالإعتماد على GTK و SQLite" (بتاريخ : 16/9/2013)

قبل ما يُقارب أربع سنوات مَضت طرحت الطبعة الأولى من هذا الكتاب هنا، وبعدما أعدت الحياة للمدونة وجدت عن طريق إحصائيات التحميل إقبال لا بأس به على هذا الكتاب و لأنه قديم بعض الشيء قررت العمل على تحسينه وتحديث ما به من معلومات.

من أهم التعديلات في هذه الطبعة هو الإنتقال إلى إستخدام GtkBuilder بدلاً من Libglade، بالإضافة إلى عدد من التحسينات العامه مثل تحسين الشيفرات بشكل عام و إضافة لقطات شاشة توضيحيه للبرامج التي نبنيها في الكتاب و إضافة شرح لمزيد من ميزات PyGTK في بضع جزئيات.

محتويات الكتاب :

مقدمة الطبعة الثانية
مقدمة الطبعة الأولى
شكر و تقدير
إهداء

الفصل الاول : مدخل إلى GTK
مقدمه
ما هي GTK؟
نظره سريعه على ماضي GTK
قبل البدء
المثال الاول : مرحباً بالعالم
الادوات Widget
ما هي الادوات Widget
الادوات مع الـ PyGTK
البدايه
الصناديق
مقدمه
HBox و Vbox
إستخدام الصناديق عملياً


الإشارات و الدوال Callback
مقدمه
الاشارات مع PyGTK
المثال الثاني : برنامج تحويل درجة الحراره
المثال الثالث : آله حاسبه
مدخل إلى Glade
التصميم مع Glade
استخدام ما تم تصميمه مع Glade
استخدام الاشارات مع ما تم تصميمه مع Glade
نقل برنامج تحويل درجة الحراره إلى Glade
نقل الآله الحاسبه إلى Glade

الفصل الثاني : مدخل إلى SQLite
مقدمه
الدوال ... اكمل القراءه

برمجة Android - إضافة خاصيّة البحث إلى قوائم ListView (بتاريخ : 16/9/2013)

مرحباً بالجميع، درس اليوم بسيط و يفترض معرفة مُسبقة بكيفية بناء القوائم بإستخدام ListView، كتبت مُسبقاً درسين شرحت فيهما كيفية بناء قوائم ListView يُمكنك مراجعتهما إن شئت و هما "بناء قائمة ListView بسيطة في واجهة المستخدم الرسومية" و "بناء قوائم ListView مُتقدمه"، سأعتمد في شرحي لهذا الدرس على القوائم البسيطة.

المطلوب
عندما تبدأ القائمة التي نعرضها للمستخدم بالتضخّم فمن المُجدي إعطاء المُستخدم إمكانية البحث في هذه القائمة ليصل إلى العنصر المطلوب بشكل أسرع، فغالباً ما تأتي البرامج (مثلاً مدير جهات الإتصال) التي تحتوي على قوائم كبيره بصندوق نص يكتب به المُستخدم للبحث عن عنصر مُعيّن و في أثناء كتابته فإنّ العناصر التي تظهر في قائمة تتغير وفقاً لما يكتب المستخدم في صندوق النص، هذا ما سنفعله بالضبط في هذا الدرس.

سنبني قائمة بسيطة تحتوي على عدد من العناصر و أَفترض هنا معرفتك الجيدة بهذا الجزء، إن لم تكن تعرفه يُمكنك مراجعة الوصلات التي وضعتها في أوّل التدوينة، بعد ذلك سنُضيف خاصية البحث لصندوق نص يكتب به المُستخدم ويتم عرض العناصر في القائمة وفقاً لما كتبه المستخدم، واجهة برنامجنا ستكون مُشابهه للتالي :



البدء بالعمل
أولاً نُصمم الواجهة الرئيسيه، فكما ترى وفقاً للصورة في الأعلى فنحن بحاجة إلى مُربّع نص EditText و بالطبع بحاجة لوضع قائمتنا ListView، لندع أسماء الأدوات كما هي بدون تغيير و ننتقل الآن إلى ... اكمل القراءه

برمجة Android - بناء قوائم ListView مُتقدمه (بتاريخ : 15/9/2013)

مرحباً بكم مره أخرى :)، نستكمل ما بدأنا به في درسنا الأول "بناء قائمة ListView بسيطة في واجهة المستخدم الرسومية"

مقدمة
في الدرس السابق قمنا ببناء قائمة بسيطة تعرض بعض البيانات وتعلمنا كيف يُمكننا معرفة العنصر الذي قام المُستخدم بإختياره عن طريق الضغط عليه وكانت المهمة بسيطة. في هذا الدرس سنشرع في بناء قائمة أكثر تقدماً إن شاء الله.

المطلوب
في هذا الدرس سنقوم بالتالي، سنعرض قائمة من الأسماء، لكل إسم رقم هاتف و بريد إلكتروني يظهران أسفل الإسم، و يمكننا إختيار أكثر من إسم و ضغط زر معين يُظهر لنا الأسماء التي قمنا بإختيارها. بشكل مشابه للتالي :



الخطوة الأولى : فئة لتخزين البيانات
في البداية سنحتاج لتعريف فئة تحتوي على معلومات الأشخاص، الإسم و الرقم و البريد الإلكتروني، و يُمكننا من خلال هذه الفئة أخذ الأسماء التي قمنا بتحديدها، هذه الخطوة بسيطة :

class Person
{
private String name;
private String phone;
private String email;

Person( String name, String phone, String email )
{
this.name = name;
this.phone = phone;
this.email = email;
}

public String getName()
{
return this.name;
}

public String getPhone()
{
return this.phone;
}

public String getEmail()
{
return this.email;
}
}


لا يوجد شيء جديد هُنا، مُجرّد فئه تُمثّل ... اكمل القراءه