برمجة Android - عرض تفاصيل عناصر قوائم ListView (بتاريخ : 17/5/2014)

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

برمجة Android - بناء قائمة ListView بسيطة في واجهة المستخدم الرسومية
برمجة Android - بناء قوائم ListView مُتقدمه
برمجة Android - إضافة خاصيّة البحث إلى قوائم ListView
برمجة Android - خاصية البحث لقوائم ListView المُتقدمه

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

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

سأبدأ بالـ MainActivity والتي سأضع في واجهتها ListView أعطيته الإسم التعريفي listView، سأضع في القائمه ثلاث عناصر وهي GNU/Linux و Mac OS X و Windows كالتالي:

	// ... //

ListView osListView = ( ListView ) findViewById( R.id.listView );

// ... //

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

osAdapter.add( "GNU/Linux" );
osAdapter.add( "Mac OS X" );
osAdapter.add( "Windows" );

//
... اكمل القراءه

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

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

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

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

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

الفئة SQLiteOpenHelper
الخطوه الأولى في إستخدام قواعد البيانات في برامجنا هو إنشاء فئة خاصه بنا تَرث (Inheritance) الفئة SQLiteOpenHelper وهي فئة تُقدمها لنا بيئة تطوير آندرويد.

الهدف من وجود وإستخدام الفئة 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 Person( "Name 1", "12345678", "name1@example.com" ) );
personsAdapter.add( new Person( "Name 2", "87654321", "name2@example.com" ) );
personsAdapter.add( new Person( "Name 3", "12348765", "name3@example.com" ) );

// ... //

listView.setAdapter( personsAdapter );

// ... //

btnOK.setOnClickListener( new OnClickListener()
{
@Override
public void onClick( View parent )
{
String message = "";

ArrayList selectedPersons = personsAdapter.getCheckedList();

Iterator it = selectedPersons.iterator();

while ( it.hasNext()
... اكمل القراءه

الطبعة الثانية من كتاب "بناء التطبيقات مع 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
مقدمه
الدوال الاساسيه
المثال الاول : برنامج لتخزين الاسماء و عرضها

الفصل الثالث :إنشاء مشروع
برنامج إدارة بيانات موظفين في شركه

ملحق أ : وصلات
قائمة المصادر


للتحميل : ملف PDF و ملف ODT

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

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

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

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



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

نأخذ الأداتان ... اكمل القراءه