بستن منو
۴۶۵
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
مباحث اولیه برای آشنایی با برنامه نویسی اندروید
28
کار با Activity ها ، در برنامه نویسی اندروید
21
طراحی فایل های xml متناظر با Activity ها و ... (لایه گرافیکی Activity ها و ...)، در برنامه نویسی اندروید
11
کار با برنامه Eclipse (یا همان ADT Bundle)، در برنامه نویسی اندروید
11
خطاهای رایج در برنامه Eclipse و در برنامه نویسی اندروید
10
کار با برنامه Android Studio ، در برنامه نویسی اندروید
9
خطاهای رایج در برنامه Android Studio و در برنامه نویسی اندروید
3
تبدیل متغیرها و سایر تبدیل ها، در برنامه نویسی اندروید
9
نمایش عکس و کار با ImageView ، در برنامه نویسی اندروید
22
نمایش متن و کار با رشته ها (strings) و TextView ، در برنامه نویسی اندروید
38
ساخت دکمه (Button) ، در برنامه نویسی اندروید
7
ساخت لیست (فهرست) با ListView ، در برنامه نویسی اندروید
12
ساخت EditText، در برنامه نویسی اندروید
6
مجموعه ویدئوهای آموزش طراحی متریال (Material Design)، در برنامه نویسی اندروید
12
طراحی متریال (Material Design)، در برنامه نویسی اندروید
3
پخش موسیقی، در برنامه نویسی اندروید
5
نمایش انیمیشن، در برنامه نویسی اندروید
3
تغییر ویژگی های کلی برنامه اندروید
3
ذخیره اطلاعات با SharedPreferences ، در برنامه نویسی اندروید
2
پایگاه داده (SQLite Database)، در برنامه نویسی اندروید
10
تبادل اطلاعات بین برنامه اندروید و سرور اینترنتی (اینترنت)، در برنامه نویسی اندروید
28
نمایش یک صفحه اینترنتی یا کدهای HTML (کار با WebView) و ساخت لینک، در برنامه نویسی اندروید
8
حلقه ها (for و while و ...)، در برنامه نویسی اندروید
2
نمایش پیام به کاربر (Dialog و AlertDialog و Toast و Notification و ...)، در برنامه نویسی اندروید
11
ویژگی های صفحه نمایش و چرخش آن، در برنامه نویسی اندروید
10
به دست آوردن ویژگی های کلی برنامه اندروید، در برنامه نویسی اندروید
4
به دست آوردن ویژگی های گوشی کاربر، در برنامه نویسی اندروید
5
بازی سازی، در برنامه نویسی اندروید
1
به اشتراک گذاری (share)، در برنامه نویسی اندروید
5
کار با فایل ها و فولدرها در حافظه خارجی (External Storage)، در برنامه نویسی اندروید
15
کار با پوشه های raw و assets ، در برنامه نویسی اندروید
2
عملیات های ریاضی در برنامه نویسی اندروید
12
کار با دوربین (camera) در برنامه نویسی اندروید
3
کار با action bar ، در برنامه نویسی اندروید
4
کار با کلاس ها (class) ، در برنامه نویسی اندروید
4
کار با package ها ، در برنامه نویسی اندروید
2
نرم افزارهای شبیه ساز برای اجرای برنامه های اندروید بر روی سیستم عامل کامپیوتر (مثل ویندوز)
2
امنیت در برنامه نویسی اندروید
1
Thread ها در برنامه نویسی اندروید
3
سرویس ها (Service) در برنامه نویسی اندروید
9
تاریخ و زمان و تمامی موارد مرتبط با زمان (عملیات های زمان بندی شده و ...)، در برنامه نویسی اندروید
9
AsyncTask در برنامه نویسی اندروید
2
آرایه ها (Arrays)، در برنامه نویسی اندروید
3
لیست آرایه ای (ArrayList)، در برنامه نویسی اندروید
6
رنگ ها (Colors)، در برنامه نویسی اندروید
3
Fragment ها و Tab بندی، در برنامه نویسی اندروید
8
معرفی کتابخانه ها (Libraries)، در برنامه نویسی اندروید
1
ساخت ProgressDialog یا ProgressBar برای نمایش میزان پیشرفت اجرای یک سری عملیات، در برنامه نویسی اندروید
3
نسخه اندروید (Android version) و API level (نسخه API) ، در برنامه نویسی اندروید
1
لرزاندن گوشی (vibrate)، در برنامه نویسی اندروید
2
پرداخت درون برنامه ای، در برنامه نویسی اندروید
1
پروژه های اندروید Open Source کاربران کلیدستان
13
فروشگاه اندروید کلیدستان
1
ساخت امکانات جانبی (جستجو، لیست علاقه مندی، لوگو، منو و ...) برای برنامه اندروید
9
مباحث عمومی در برنامه نویسی اندروید
47
×

دانلود فروشگاه اندروید کلیدستان

2259

نویسنده

علیرضا گلمکانی ( admin )

شماره کلید
دسته کلید - دسته بندی

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

در بیشتر برنامه های آموزشی و اطلاعاتی که به صورت تعدادی مبحث هستند، دو بخش ((جستجو)) و ((لیست علاقه مندی ها)) جزء بخش های اصلی و ضروری برنامه می باشند. قبلا در مبحثی دیگر، چگونگی ساخت قسمت جستجو در عنوان مبحث ها را شرح دادیم، اکنون در این مبحث قصد داریم که چگونگی ساخت لیست علاقه مندی ها را شرح بدهیم.

چون از SharedPreferences استفاده می کنیم، تا زمانی که کاربر، برنامه اندروید را uninstall نکند، اطلاعات مروبط به لیست علاقه مندی ها که به صورت SharedPreferences ذخیره شده است، باقی خواهد ماند و با خروج کاربر از برنامه اندروید، مشکلی برای آنها به وجود نمی آید.

اگر یادتان باشد، در مبحث مربوط به جستجو، ما برای سه مبحث، سه Activity می ساختیم و بنده در همانجا تذکر دادم که نباید در برنامه ها، بدین شیوه مباحث را بسازیم و مجبور نیستیم که برای تک تک مبحث ها، Activity های جداگانه بسازیم، بلکه می توانیم تنها یک Activity بسازیم و سپس بر اساس شماره مبحث ها، اطلاعات مبحث را در آن Activity نمایش بدهیم. در واقع، در مبحث جستجو، تنها می خواستیم منطق جستجو را آموزش بدهیم. اما اکنون، چون یک مبحث نیز در مورد چگونگی ساخت برنامه اندروید ((محتوا محور)) نوشته ام، بد نیست که در برخی مباحث، آن موارد را نیز به کار ببرم. بنابراین این بار کدها را به گونه ای می نویسم که برنامه اندروید، به راحتی قابل توسعه باشد.

در واقع، این مبحث، علاوه بر آموزش ساخت لیست علاقه مندی ها، چگونگی ساخت یک برنامه محتوا محور ساده را نیز آموزش می دهد، به گونه ای که مثلا اگر اکنون دارای 10 مبحث است، بنده اگر بخواهم آن را به 20 مبحث تغییر بدهم، تنها باید یکی از فایل های پروژه اندروید را باز کنم و عدد 10 نوشته شده در آن را به 20 تغییر بدهم و سپس، فایل strings.xml را باز کنم و تعداد 10 رشته (string) که برابر عنوان مبحث ها است و همچنین، 10 رشته دیگر که برابر متن آن مبحث ها می باشد را تعریف کنم. با این تغییرات، تعداد مباحث برنامه به 20 عدد افزایش می یابد، بدون اینکه بنده مجبور باشم که حتی یک خط از کدهای Activity های مختلف برنامه را تغییر بدهم.

دقت شود که در این برنامه اندروید، من تنها از فایل strings.xml برای تعریف محتوای اطلاعاتی برنامه استفاده کرده ام، شما می توانید انتخاب های دیگری مثل ذخیره در پایگاه داده SQLite ، ذخیره در فایل های HTML ، دریافت از اینترنت و ... را داشته باشید (یا ترکیبی از آنها)، که توضیحاتی در مورد آنها را می توانید در مبحث زیر بخوانید (در این برنامه اندروید، ساده ترین روش را انتخاب کرده ایم) :


کلید شماره 2253

ابتدا بهتر است نگاهی به خود برنامه داشته باشیم. اولین Activity برنامه، شامل لیست تمامی مباحث آموزشی است (من تعداد 7 مبحث را انتخاب کرده ام) :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

فهرست مبحث ها، با استفاده از ListView نمایش داده شده است. با اشاره بر روی یک item از ListView ، به مبحث متناظر با شماره آن، منتقل می شویم. مثلا من بر روی عنوان مبحث سوم اشاره می کنم :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

در زیر محتوای هر مبحث، یک علامت ستاره وجود دارد (با استفاده از ImageView)، که اگر قبلا کاربر آن را به لیست علاقه مندی ها افزوده باشد، به رنگ طلایی است و اگر جزء لیست علاقه مندی ها نباشد، همین تصویر، اما با رنگ سیاه و سفید نمایش داده می شود. بنابراین کاربر با دیدن شکل ستاره و از رنگ آن، متوجه می شود که آیا این مبحث جزء لیست علاقه مندی ها هست یا نه.

برای اینکه مبحث به لیست علاقه مندی ها افزوده شود، بر روی ستاره اشاره می کنیم و بنابراین رنگ آن به رنگ طلایی تغییر پیدا می کند و پیامی نیز با عنوان ((به لیست علاقه مندی ها افزوده شد)) نمایش داده می شود (با استفاده از روش Toast) :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

همچنین، اگر اکنون دوباره بر روی ستاره طلایی رنگ، اشاره کنیم، مبحث سوم از لیست علاقه مندی ها حذف شده، رنگ ستاره به سیاه و سفید تغییر پیدا می کند و پیامی با عنوان ((از لیست علاقه مندی ها حذف شد)) نمایش داده می شود :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

برای ورود به Activity ای که در آن، لیست علاقه مندی ها نمایش داده می شود، یک آیکون (icon) در action bar برنامه اندروید، به شکل همان ستاره طلایی رنگ، قرار داده ایم. مثلا فرض کنید که من مبحث شماره هفتم را نیز به لیست علاقه مندی اضافه نمایم و سپس بر روی آیکون موجود در action bar ، اشاره کنم. لیست علاقه مندی ها به صورت زیر نمایش داده می شود (شامل مبحث های سوم و هفتم که قبلا آنها را به لیست علاقه مندی ها اضافه کرده ایم) :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

برای نمایش لیست علاقه مندی ها، از یک ListView استفاده کرده ایم.

خوب اکنون به سراغ چگونگی کدنویسی پروژه اندروید می رویم و بخش های مختلف کدها را شرح خواهیم داد. توصیه می کنم فایل های پروژه اندروید را از انتهای مبحث، دانلود نمایید. در ادامه، ساختار پروزه اندروید را شرح می دهیم.

نام پروژه اندروید را برابر Favorites انتخاب کرده ایم (نام package برابر com.kelidestan.favorites انتخاب شده است. نام activity اصلی را برابر MainActivity انتخاب کرده ایم و فایل xml متناظر آن را هم برابر activity_main قرار داده ایم).

قبلا گفته بودم که اگر اطلاعاتی هست که در تعدادی از Activity های مختلف پروژه اندروید به کار می رود، نیازی نیست که مقدار آنها را در تک تک Activity ها تعریف کنید، بلکه می توانید یک کلاس (class) ساخته و مقادیر مورد نظرتان را در آن تعریف کنید و سپس در هر Activity که به آن مقدار نیاز دارید، یک شیء (object) از آن کلاس (class) بسازید و سپس مقدار مورد نظرتان را فراخوانی کنید. خوبی این روش این است که اگر بخواهید آن مقدار مورد نظر را تغییر بدهید، دیگر مجبور نیستید که تک تک آن Activity ها که در آنها، آن مقدار خاص به کار رفته است را باز و ویرایش نمایید. مقدار مورد نظر ما که در تعدادی از Activity های این پروژه اندروید به کار می رود، تعداد کل مبحث ها می باشد (که آن را برابر 7 انتخاب کرده ایم). بنابراین، یک کلاس با نام Globals ساخته ایم :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

کدهای این کلاس (class)، به صورن زیر می باشد :


package com.kelidestan.favorites;

import android.app.Application;

public class Globals extends Application {

        public int Subjects_total_number = 7;

}

در هر Activity که خواستیم نعداد کل مبحث ها را از کلاس Globals فراخوانی کنیم، ابتدا دو متغیر به صورت public و به صورت زیر تعریف می کنیم :


public int Subjects_total_number;
public Globals global = new Globals();

که در آن، global یک شیء (object) ساخته شده از کلاس Globals می باشد. سپس با کد زیر، تعداد کل مبحث ها را در متغیر Subjects_total_number ذخیره می کنیم :


Subjects_total_number = global.Subjects_total_number;

دقت کنید که نام Subjects_total_number را می توانستیم متفاوت با نام تعریف شده در کلاس Globals تعریف کنیم، اما من ترجیح دادم که یکسان باشند.

اکنون نگاهی به کدهای فایل strings.xml می اندازیم :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

کدهای فایل strings.xml به صورت زیر می باشد :


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Favorites</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="title_activity_favorites">لیست علاقه مندی ها</string>
    <string name="favorites">لیست علاقه مندی ها</string>
    <string name="title_activity_show__subjects">نمایش  مبحث ها</string>
    <string name="favorites_added">به لیست علاقه مندی ها افزوده شد</string>
    <string name="favorites_removed">از لیست علاقه مندی ها حذف شد</string>
   
    <string name="subject_1">آموزش اول</string>
    <string name="subject_2">آموزش دوم</string>
    <string name="subject_3">آموزش سوم</string>
    <string name="subject_4">آموزش چهارم</string>
    <string name="subject_5">آموزش پنجم</string>
    <string name="subject_6">آموزش ششم</string>
    <string name="subject_7">آموزش هفتم</string>
   
    <string name="subject_text_1">متن مربوط به آموزش اول</string>
    <string name="subject_text_2">متن مربوط به آموزش دوم</string>
    <string name="subject_text_3">متن مربوط به آموزش سوم</string>
    <string name="subject_text_4">متن مربوط به آموزش چهارم</string>
    <string name="subject_text_5">متن مربوط به آموزش پنجم</string>
    <string name="subject_text_6">متن مربوط به آموزش ششم</string>
    <string name="subject_text_7">متن مربوط به آموزش هفتم</string>
</resources>

دقت شود که نام رشته (string) متناظر با عنوان مبحث های آموزشی را به شکل کلی زیر تعریف می کنیم :


subject_N

که در آن، N برابر شماره مبحث می باشد (از شماره 1 تا 7). همچنین رشته (string) متناظر با متن مبحث های آموزشی، به شکل کلی زیر تعریف می شود :


subject_text_N

که در آن، N برابر شماره مبحث می باشد (از شماره 1 تا 7).

اینکه در ابتدا، کلاس Globals و همچنین کدهای فایل strings.xml را شرح دادیم، به این دلیل است که چنانچه شما قصد داشته باشید که در آینده تعداد مبحث ها را افزایش بدهید، تنها با این دو سر و کار دارید. مثلا فرض کنید که من بخواهم تعداد مبحث ها را به 10 تا افزایش بدهم، برای این منظور، ابتدا کلاس Globals را باز می کنم و عدد 7 را به 10 تبدیل می کنم و سپس فایل strings.xml را باز کرده و سه رشته برای عنوان مبحث ها (از شماره 8 تا شماره 10) و سه رشته نیز برای متن مبحث ها (از شماره 8 تا شماره 10)، مطابق شکل کلی که شرح داده شد، می سازم.

برای پروژه اندروید، تعدادی عکس به کار برده ایم که در پوشه drawable-hdpi قرار گرفته اند :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

عکس arrow.png را در item های ListView مربوط به لیست علاقه مندی ها به کار برده ایم (برای زیبایی بیشتر). عکس هایی که در انتهای نام آنها، کلمه background وجود دارد، به عنوان پس زمینه Activity ها به کار رفته اند و تنها برای زیباتر کردن برنامه اندروید می باشند. ic_launcher.png هم که همان آیکون (icon) برنامه اندروید می باشد. اما دو عکس favorite_selected.png و favorite_not_selected.png مهم می باشند و برای لیست علاقه مندی ها ضروری هستند. این دو عکس، هر دو به شکل ستاره هستند (ستاره ای که در لیست علاقه مندی ها نمایش می دهیم)، یکی به رنگ طلایی و دیگری به صورت سیاه و سفید.

همان طور که قبلا گفتیم، اطلاعات مربوط به لیست علاقه مندی ها (اینکه مباحث در لیست علاقه مندی ها قرار دارند یا خیر) را با استفاده از SharedPreferences ذخیره می کنیم. برای استفاده از SharedPreferences ، یک کلاس (class) با نام Prefs ساخته ایم :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

کدهای کلاس Prefs را به صورت زیر نوشته ایم :


package com.kelidestan.favorites;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;

public class Prefs extends PreferenceActivity {
       
        public int Subjects_total_number;
        public Globals global = new Globals();
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
           
            Subjects_total_number = global.Subjects_total_number;
           
            // for favorites
            Boolean [] favorites = new Boolean [Subjects_total_number];
            for(int x = 1; x < Subjects_total_number+1; x++){
                        String each_subject = "subject_" + String.valueOf(x);
                        favorites [x] = prefs.getBoolean(each_subject, false);
                }            
    }

}

یک آرایه از جنس Boolean و با نام favorites تعریف می کنیم، که هر عنصر آن، متناظر با رشته ای (string) به شکل کلی زیر است :


subject_N

که در آن، N برابر شماره مبحث است. چون آرایه از جنس Boolean است، بنابراین هر عنصر از آرایه، می تواند مقدار true یا false داشته باشد که ما مقدار true برای یک مبحث را به این صورت در نظر می گیریم که آن مبحث در لیست علاقه مندی ها قرار دارد و مقدار false را هم به این صورت در نظر می گیریم که آن مبحث در لیست علاقه مندی ها قرار ندارد. مثلا فرض کنید که بخواهیم ببینیم که آیا مبحث شماره 4 در لیست علاقه مندی ها قرار دارد یا نه، برای این منظور، باید ببینیم در آرایه favorites ، عنصری که با رشته subject_4 شناسایی می شود، مقدارش برابر true است یا برابر false . مثلا اگر مقدار false باشد، یعنی مبحث شماره 4 در لیست علاقه مندی قرار ندارد. حال فرض کنید که بخواهیم آن را به لیست علاقه مندی ها اضافه کنیم، بنابراین باید کدهایی بنویسیم که مقدار false متناظر با subject_4 در آرایه favorites ، به مقدار true تبدیل شود.

در صورت تمایل، برای آشنایی بیشتر با SharedPreferences ، نگاهی به کلید زیر بیندازید :


کلید شماره 288

اکنون بهتر است کد مربوط به نمایش آیکون (icon) لیست علاقه مندی ها در action bar (در نوار بالای برنامه اندروید) را شرح بدهیم، که با اشاره کاربر بر روی آن، به Activity نمایش لیست علاقه مندی ها، منتقل می شود. برای این منظور، فایل menu.xml در پوشه menu از پروزه اندروید را ساخته ایم :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

کدهای فایل menu.xml به صورت زیر می باشند :


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/itemFavorites"
        android:icon="@drawable/favorite_selected"
        android:showAsAction="ifRoom|withText"
        android:title="@string/favorites">
    </item>
</menu>

که در آن، تنها یک item تعریف کرده ایم که عکس متناظر با آن، برابر favorite_selected از پوشه های drawable (یعنی همان عکس ستاره طلایی رنگ) انتخاب شده است و متن متناظر با آن را برابر رشته (string) با نام favorites تعریف شده در فایل strings.xml انتخاب کرده ایم.

ساخت فایل menu.xml ، تنها شیوه نمایش را تعیین کرده است و علاوه بر آن، در هر Activity که می خواهیم آیکون (icon) مورد نظرمان در action bar نمایش داده شود، باید یک سری کد بنویسیم. آن کدها بر اساس دو روش (method) با نام های onCreateOptionsMenu و onOptionsItemSelected می باشند که در بخش پایانی کدهای Activity های برنامه، آنها را نوشته ایم. بنابراین در ادامه که کدهای Activity ها را شرح می دهیم، به آنها نیز توجه داشته باشید. مثلا بخشی از کد فایل MainActivity.java که در این زمینه است را ذکر می کنیم :


@Override
         public boolean onCreateOptionsMenu(Menu menu) {
                        MenuInflater inflater = getMenuInflater();
                    inflater.inflate(R.menu.menu, menu);
                    return true;
        }
       
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                case R.id.itemFavorites:
                        startActivity(new Intent(MainActivity.this, Favorites.class));
                        return true;
                default:
                        return true;
                }      
        }

حال قصد داریم که Activity های برنامه را شرح بدهیم. ابتدا به سراغ Activity با نام MainActivity می رویم که برای نمایش لیست مبحث های موجود در برنامه اندروید به کار می رود (Activity اصلی برنامه اندروید که در ابتدا نمایش داده می شود) :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

فایل MainActivity.java ، فایل مربوط به Activity می باشد و فایل xml متناظر با آن (که در واقع ساختار گرافیکی Activity را مشخص می کند) نیز، فایل activity_main.xml است. با توجه به اینکه در آن، از یک ListView برای نمایش فهرست مبحث ها استفاده کرده ایم، بنابراین ساختار هر ردیف (هر item) از ListView را هم در فایل list_item_subjects.xml تعیین کرده ایم.

کدهای فایل activity_main.xml به صورت زیر می باشد :


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@drawable/subjects_list_background"
     android:orientation="vertical"
     tools:context=".MainActivity" >

     <!-- List View -->

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

کدهای فایل list_item_subjects.xml که تعیین کننده ساختار گرافیکی هر ردیف (هر item) از ListView می باشد، عبارت است از :


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_margin="8dp"
        android:gravity="center"
        android:textSize="20sp" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

کدهای فایل MainActivity.java که همان کدهای java مربوط به Activity است، به صورت زیر می باشد :


package com.kelidestan.favorites;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends ListActivity {
       
        public ListView lv;
        public Globals global = new Globals();
        public int Subjects_total_number;
        public String[] Subjects;

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

                Subjects_total_number = global.Subjects_total_number;
                Subjects = new String[Subjects_total_number];
                for(int x = 1; x < Subjects_total_number+1; x = x+1) {
                        String this_subject = "subject_" + String.valueOf(x);
            int resID = getResources().getIdentifier(this_subject, "string", getPackageName());
                        Subjects[x-1] = getResources().getString(resID);
        }
               
                setListAdapter(new MyAdapter(this,
                                android.R.layout.simple_list_item_1, R.id.textView1,
                                Subjects));    
               
                lv = getListView();
                lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, final View view,
                int position, long id) {                       
                        Intent i = new Intent(getApplicationContext(), Show_Subjects.class);
                        String Subject_number = String.valueOf(position+1);
                        i.putExtra("subject_number", Subject_number);
                        startActivity(i);      
            }

          });
                               
        }
       
        private class MyAdapter extends ArrayAdapter<String>{

                public MyAdapter(Context context, int resource, int textViewResourceId,
                                String[] strings) {
                        super(context, resource, textViewResourceId, strings);
                        // TODO Auto-generated constructor stub
                }
               
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                        View row = inflater.inflate(R.layout.list_item_subjects, parent, false);
                        String[] items = Subjects;
                       
                        TextView tv = (TextView) row.findViewById(R.id.textView1);
                        tv.setText(items[position]);
       
                        return row;
                }      
        }
       
        @Override
          public boolean onCreateOptionsMenu(Menu menu) {
                        MenuInflater inflater = getMenuInflater();
                    inflater.inflate(R.menu.menu, menu);
                    return true;
        }
       
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                case R.id.itemFavorites:
                        startActivity(new Intent(MainActivity.this, Favorites.class));
                        return true;
                default:
                        return true;
                }      
        }

}

اکنون بخش های مهم کدهای فوق را توضیح می دهیم. با کدهای زیر، عنوان مبحث ها را در یک آرایه رشته ای با نام Subjects ذخیره کرده ایم :


Subjects_total_number = global.Subjects_total_number;
Subjects = new String[Subjects_total_number];
for(int x = 1; x < Subjects_total_number+1; x = x+1) {
    String this_subject = "subject_" + String.valueOf(x);
    int resID = getResources().getIdentifier(this_subject, "string", getPackageName());
    Subjects[x-1] = getResources().getString(resID);
}

کد زیر، چگونکی عمل کردن ListView بعد از اشاره کاربر بر روی یک item از آن را شرح می دهد :


lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, final View view,
        int position, long id) {                       
        Intent i = new Intent(getApplicationContext(), Show_Subjects.class);
        String Subject_number = String.valueOf(position+1);
        i.putExtra("subject_number", Subject_number);
        startActivity(i);      
    }

});

همان طور که مشاهده می کنید، با استفاده از Intent ، به Activity با نام Show_Subjects منتقل می شویم که همان Activity طراحی شده برای نمایش محتوای مبحث ها می باشد. آن Activity ، یک رشته شامل شماره مبحث مورد نظر را دریافت می کند و سپس بر اساس آن شماره، محتویات مبحث را نمایش می دهد. بنابراین ما شماره متناظر با item اشاره شده را با نام subject_number به Show_Subjects می فرستیم. یعنی با این خط از کدها :


i.putExtra("subject_number", Subject_number);

در کلاس MyAdapter ، این خط از کدها مهم می باشد :


String[] items = Subjects;
                       
TextView tv = (TextView) row.findViewById(R.id.textView1);
tv.setText(items[position]);

که توسط آنها، عنوان مبحث ها را در TextView تعریف شده در فایل list_item_subjects.xml (که برای ساختار هر ردیف از ListView می باشد) نمایش می دهیم.

اکنون قصد داریم Activity ساخته شده برای نمایش محتوای مبحث ها را شرح بدهیم که دارای نام Show_Subjects می باشد :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

فایل مربوط به این Activity ، دارای نام Show_Subjects.java می باشد و نام فایل xml متناظر با آن برابر show_subjects.xml است.

کدهای فایل show_subjects.xml عبارتند از :


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/subjects_background"
    android:orientation="vertical"
    tools:context=".Show_Subjects" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:gravity="right"
        android:textSize="20sp"
        android:text="@string/hello_world" />
   
    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:gravity="right"
        android:textSize="20sp"
        android:text="@string/hello_world" />
   
    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/favorite_not_selected" />

    </TableRow>

</LinearLayout>

که شامل دو TextView است که یکی برای نمایش عنوان مبحث و دیگری برای نمایش متن مبحث به کار می رود. در زیر آن دو، یک ImageView قرار می گیرد که عکس ستاره را به ما نمایش می دهد و بر اساس رنگ ستاره، می توانیم تشخیص بدهیم که این مبحث در لیست علاقه مندی ها وجود دارد یا خیر و با اشاره بر روی آن، می توانیم به لیست اضافه کنیم و یا از لیست حذفش کنیم (توضیحات کامل را در ابتدای همین مبحث آموزشی، با عکس ها، شرح دادیم).

کدهای فایل Show_Subjects.java عبارتند از :


package com.kelidestan.favorites;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class Show_Subjects extends Activity {
       
        public String Subject_number;
        public SharedPreferences shared;
        public SharedPreferences.Editor editor;
        Globals global = new Globals();
        public ImageView iv_favorites;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.show_subjects);
       
        iv_favorites = (ImageView) findViewById(R.id.imageView1);
       
        Bundle extras = getIntent().getExtras();
                if (extras != null) {
                        Subject_number = extras.getString("subject_number");
                }
               
                TextView tv1 = (TextView) findViewById(R.id.textView1);
                String stringName_1 = "subject_" + String.valueOf(Subject_number);;
                int resID_1 = getResources().getIdentifier(stringName_1, "string", getPackageName());
                tv1.setText(resID_1);
               
                TextView tv2 = (TextView) findViewById(R.id.textView2);
                String stringName_2 = "subject_text_" + String.valueOf(Subject_number);;
                int resID_2 = getResources().getIdentifier(stringName_2, "string", getPackageName());
                tv2.setText(resID_2);
               
                // Favorites
        shared = getSharedPreferences("Prefs", MODE_PRIVATE);
        editor = shared.edit();
       
        final int subject_number_int = Integer.parseInt(Subject_number);
        final String this_subject = "subject_" + String.valueOf(subject_number_int);
       
        final Boolean b1 = shared.getBoolean(this_subject, false);
        if (b1){
                iv_favorites.setImageResource(R.drawable.favorite_selected);
                }else{
                        iv_favorites.setImageResource(R.drawable.favorite_not_selected);
                }
       
        iv_favorites.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                Boolean b2 = shared.getBoolean(this_subject, false);
                                if (b2){
                                    editor.putBoolean(this_subject, false);
                                    editor.apply();
                                    iv_favorites.setImageResource(R.drawable.favorite_not_selected);
                                    // show message
                                    String message = getResources().getString(R.string.favorites_removed);
                                    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
                                }else{
                                        editor.putBoolean(this_subject, true);
                                        editor.apply();
                                        iv_favorites.setImageResource(R.drawable.favorite_selected);
                                        // show message
                                        String message = getResources().getString(R.string.favorites_added);
                                        Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
                                }
                    }
                });
    }


    @Override
          public boolean onCreateOptionsMenu(Menu menu) {
                        MenuInflater inflater = getMenuInflater();
                    inflater.inflate(R.menu.menu, menu);
                    return true;
        }
       
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                case R.id.itemFavorites:
                        startActivity(new Intent(Show_Subjects.this, Favorites.class));
                        return true;
                default:
                        return true;
                }      
        }
   
}

بخش های مهم کدها را در ادامه شرح می دهیم.

با کدهای زیر، ابتدا شماره مبحث را که با نام subject_number به این Activity ارسال کرده ایم، دریافت کرده و سپس بر اساس آن، عنوان مبحث و همچنین متن مبحث را از فایل strings.xml فراخوانی کرده و در دو TextView نمایش می دهیم :


Bundle extras = getIntent().getExtras();
if (extras != null) {
    Subject_number = extras.getString("subject_number");
}
               
TextView tv1 = (TextView) findViewById(R.id.textView1);
String stringName_1 = "subject_" + String.valueOf(Subject_number);;
int resID_1 = getResources().getIdentifier(stringName_1, "string", getPackageName());
tv1.setText(resID_1);
               
TextView tv2 = (TextView) findViewById(R.id.textView2);
String stringName_2 = "subject_text_" + String.valueOf(Subject_number);;
int resID_2 = getResources().getIdentifier(stringName_2, "string", getPackageName());
tv2.setText(resID_2);

با کدهای زیر، بر اساس SharedPreferences ، چک می کنیم که آیا مبحث در لیست علاقه مندی ها قرار دارد یا نه (بر اساس مقدار true یا false ذخیره شده) و سپس بر اساس آن، شکل مناسب برای نمایش یکی از دو عکس ستاره (طلایی یا سیاه و سفید) را در ImageView نمایش می دهیم تا کاربر، وضعیت مبحث از نظر قرارگیری در لیست علاقه مندی ها را بداند :


// Favorites
shared = getSharedPreferences("Prefs", MODE_PRIVATE);
editor = shared.edit();
       
final int subject_number_int = Integer.parseInt(Subject_number);
final String this_subject = "subject_" + String.valueOf(subject_number_int);
       
final Boolean b1 = shared.getBoolean(this_subject, false);
if (b1){
    iv_favorites.setImageResource(R.drawable.favorite_selected);
}else{
    iv_favorites.setImageResource(R.drawable.favorite_not_selected);
}

کدهای زیر، برای تغییر وضعیت مبحث از نظر قرارگیری در لیست علاقه مندی ها می باشد (تغییر مقدار ذخیره شده توسط SharedPreferences و همچنین تغییر شکل فعلی نمایش داده شده)، زیرا اگر کاربر بر روی شکل ستاره اشاره کند، باید وضعیت آن مبحث تغییر داده شود و شکل نمایش داده شده در ImageView نیز عوض شود. همچنین یک پیام کوتاه نیز توسط روش Toast به کاربر نمایش داده می شود تا تغییر وضعیت را تذکر بدهد :


iv_favorites.setOnClickListener(new OnClickListener() {
                       
    @Override
    public void onClick(View v) {
        Boolean b2 = shared.getBoolean(this_subject, false);
        if (b2){
            editor.putBoolean(this_subject, false);
            editor.apply();
            iv_favorites.setImageResource(R.drawable.favorite_not_selected);
            // show message
            String message = getResources().getString(R.string.favorites_removed);
            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
        }else{
            editor.putBoolean(this_subject, true);
            editor.apply();
            iv_favorites.setImageResource(R.drawable.favorite_selected);
            // show message
            String message = getResources().getString(R.string.favorites_added);
            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
        }
    }
});

حال می خواهیم کدهای Activity در نظر گرفته شده برای نمایش لیست علاقه مندی ها را شرح بدهیم. این Activity دارای نام Favorites می باشد :

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه

فایل مربوط به این Activity ، دارای نام Favorites.java می باشد و فایل xml متناظر با آن، فایل favorites.xml است. این Activity بر اساس یک ListView ، فهرست مبحث های قرار گرفته در لیست علاقه مندی ها را نمایش می دهد. فایل list_item_favorites.xml ساختار گرافیکی هر ردیف (هر item) از این ListView را تعیین می کند.

کدهای فایل list_item_favorites.xml عبارتند از :


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:src="@drawable/arrow" />

        <TextView android:id="@+id/favorites_textView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="10dip"
            android:textSize="16dip"
            android:textStyle="bold"/>
   
    </TableRow>
 
</LinearLayout>

برای زیبایی بیشتر، عکس یک فلش را نیز در ساختار هر ردیف از ListView قرار داده ایم (در ImageView).

کدهای فایل favorites.xml عبارتند از :


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/favorites_background"
    android:orientation="vertical" >
   
    <!-- List View -->

    <ListView
        android:id="@+id/list_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
 
</LinearLayout>

کدهای فایل Favorites.java عبارتند از :


package com.kelidestan.favorites;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class Favorites extends Activity {
       
        public int Subjects_total_number;
        public Globals global = new Globals();
        public List<String> Favorites_numbers;
        public List<String> Favorites_strings;
       
        // List view
    private ListView lv;
     
    // Listview Adapter
    ArrayAdapter<String> adapter;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.favorites);
               
                // Listview Data
                Favorites_strings = new ArrayList<String>();
                Favorites_numbers = new ArrayList<String>();
                final SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
                Subjects_total_number = global.Subjects_total_number;
                for(int x = 1; x < Subjects_total_number+1; x = x+1) {  
                        String each_subject = "subject_" + String.valueOf(x);
                Boolean b = shared.getBoolean(each_subject, false);
                        if(b){
                            String this_subject = "subject_" + String.valueOf(x);
                    int resID = getResources().getIdentifier(this_subject, "string", getPackageName());
                    Favorites_strings.add(getResources().getString(resID));
                        String x_string = String.valueOf(x);
                        Favorites_numbers.add(x_string);
                        }
                }
               
               
         
        lv = (ListView) findViewById(R.id.list_view);
         
        // Adding items to listview
        adapter = new ArrayAdapter<String>(this, R.layout.list_item_favorites, R.id.favorites_textView, Favorites_strings);
        lv.setAdapter(adapter);
       
               
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, final View view,
                int position, long id) {
                String favorite_number = Favorites_numbers.get(position);
                Intent i = new Intent(getApplicationContext(), Show_Subjects.class);
                                i.putExtra("subject_number", favorite_number);
                                startActivity(i);
            }

          });
        }
       
       
       
        @Override
          public boolean onCreateOptionsMenu(Menu menu) {
                        MenuInflater inflater = getMenuInflater();
                    inflater.inflate(R.menu.menu, menu);
                    return true;
        }
       
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                case R.id.itemFavorites:
                        startActivity(new Intent(Favorites.this, Favorites.class));
                        return true;
                default:
                        return true;
                }      
        }

       

}

بخش های مهم کدها را در ادامه شرح می دهیم.

در کدهای زیر، ابتدا بر اساس اطلاعاتی که توسط SharedPreferences ذخیره شده اند، مبحث هایی را که جزء لیست علاقه مندی ها می باشند را تشخیص داده و عنوان آنها و همچنین شماره آنها را در دو آرایه با نام های Favorites_strings و Favorites_numbers ذخیره می کنیم تا برای نمایش در ListView به کار روند :


// Listview Data
Favorites_strings = new ArrayList<String>();
Favorites_numbers = new ArrayList<String>();
final SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
Subjects_total_number = global.Subjects_total_number;
for(int x = 1; x < Subjects_total_number+1; x = x+1) {  
    String each_subject = "subject_" + String.valueOf(x);
    Boolean b = shared.getBoolean(each_subject, false);
    if(b){
        String this_subject = "subject_" + String.valueOf(x);
        int resID = getResources().getIdentifier(this_subject, "string", getPackageName());
        Favorites_strings.add(getResources().getString(resID));
        String x_string = String.valueOf(x);
        Favorites_numbers.add(x_string);
    }
}

کدهای زیر تعیین کرده است که اگر کاربر بر روی یک مبحث اشاره کرد، به Activity مخصوص نمایش محتوای مبحث ها منتقل بشود (Activity با نام Show_Subjects) و محتوای مبحث را ببیند :


lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, final View view,
        int position, long id) {
        String favorite_number = Favorites_numbers.get(position);
        Intent i = new Intent(getApplicationContext(), Show_Subjects.class);
        i.putExtra("subject_number", favorite_number);
        startActivity(i);
    }

});

دقت شود که شماره مبحث را با نام subject_number ، به Show_Subjects فرستاده ایم زیرا Show_Subjects شماره مبحث را دریافت کرده و سپس محتوای آن را نمایش می دهد.

فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :

کپی برداری از محتوای سایت کلیدستان، ممنوع بوده و پیگرد قانونی دارد. (تنها استفاده شخصی کاربر، مجاز است) (کپی برداری توسط سایر وب سایت ها = حرام) (بیشتر بدانید)

خوانده شد
مبحث بالا، مفید بود و سایت کلیدستان را دوست داشتم :
محبوب کردن این مبحث در گوگل :
اون چیزی که میخواستم نبود :
سوال دارم :
ارسال نظر :
نظرات 3 3 0
rrezayi75
۱۳۹۵/۰۸/۰۱
۱۹:۰۹

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

admin
۱۳۹۵/۰۸/۰۲
۰۱:۵۰

سلام.
نگفتید با چه قسمتی مشکل دارید.
توصیه می کنم پروژه اندروید را دانلود کنید و در eclipse وارد کرده و به بررسی آن بپردازید.

Flower

rrezayi75
۱۳۹۵/۰۸/۰۵
۰۲:۰۶

دوباره سلام
نمیدونم چرا پیامم کامل نیومد.. معذرت میخوام..
با اجرا شدنش مشکلی ندارم..

منظورم از مشکل اینه که..اگه بخوام بجز عنوان و خودِ متن یه عکس هم اضافه کنم چیکار باید کنم..؟

یه خواهش دیگه هم داشتم...معذرت میخوام..
چیجوری میشه امکان جستجو رو اضافه کرد؟
هر کاری کردم نتونستم به برنامه قابلیت جستجو رو اضافه کنم..

اگه راهنماییم کنین یه دنیا ممنون میشم ازتون Flower

به جرأت میتونم بگم بهترین سایت آموزشی هستین
واقعا ممنون Heart

*** نظر بدهید

دسترسی سریع

×

شماره کلید


کلید
×

شماره دسته کلید


دسته کلید
×

جستجو


جستجو

کلمات کلیدی

راهنمای کلمات کلیدی (کلاس ها، توابع، عناصر و ...) در برنامه نویسی اندروید، بر اساس حرف اول کلمه کلیدی :

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

developer.android.com

دسترسی به اطلاعات دامنه developer.android.com بر روی سایت کلیدستان (دور زدن تحریم گوگل) :

بستن منو
۴۶۳
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
مجموعه ویدئوهای آموزشی برنامه نویسی اندروید - مجموعه Android Application Development - از thenewboston.com - بر اساس Eclipse (یا ADT Bundle)
200
مجموعه ویدئوهای آموزشی برنامه نویسی اندروید برای مبتدیان - مجموعه Android App Development for Beginners - از thenewboston.com - بر اساس Android Studio
77
مجموعه ویدئوهای آموزشی برنامه نویسی اندروید (Android) برای مبتدیان - مجموعه Android Tutorial for Beginners
107
مجموعه ویدئوهای آموزشی طراحی متریال (Material) در اندروید - مجموعه 5 Android Material Design Tutorial
59
مباحث اولیه برای آشنایی با برنامه نویسی اندروید
2
نمایش متن و کار با رشته ها (strings) و TextView ، در برنامه نویسی اندروید
6
ساخت دکمه (Button) ، در برنامه نویسی اندروید
0
ساخت لیست (فهرست) با ListView ، در برنامه نویسی اندروید
4
ذخیره اطلاعات با SharedPreferences ، در برنامه نویسی اندروید
1
پایگاه داده (SQLite Database)، در برنامه نویسی اندروید
3
نرم افزارهای شبیه ساز برای اجرای برنامه های اندروید بر روی سیستم عامل کامپیوتر (مثل ویندوز)
2
ساخت امکانات جانبی (جستجو، لیست علاقه مندی، لوگو، منو و ...) برای برنامه اندروید
1
مباحث عمومی در برنامه نویسی اندروید
1
بستن منو
۸۳
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
دسترسی سریع به دسته کلیدها :

کار با Activity ها ، در برنامه نویسی اندروید طراحی فایل های xml متناظر با Activity ها و ... (لایه گرافیکی Activity ها و ...)، در برنامه نویسی اندروید عنصرهای گرافیکی مختلف، در برنامه نویسی اندروید نمایش عکس و کار بار ImageView ، در برنامه نویسی اندروید پردازش تصویر، در برنامه نویسی اندروید نمایش متن و کار با رشته ها (strings) و TextView ، در برنامه نویسی اندروید ساخت لیست (فهرست) با ListView ، در برنامه نویسی اندروید ساخت EditText، در برنامه نویسی اندروید کار با صدا و فایل های صوتی (پخش، ضبط و ...)، در برنامه نویسی اندروید نمایش انیمیشن (با متن یا عکس)، در برنامه نویسی اندروید گرافیک دو بعدی (2D) و سه بعدی (3D)، در برنامه نویسی اندروید بازی سازی، در برنامه نویسی اندروید به اشتراک گذاری (share)، در برنامه نویسی اندروید نمایش پیام به کاربر، در برنامه نویسی اندروید ویژگی های صفحه نمایش و چرخش آن، در برنامه نویسی اندروید عملیات های ریاضی در برنامه نویسی اندروید Fragment ها در برنامه نویسی اندروید Thread ها در برنامه نویسی اندروید سرویس ها (Service) در برنامه نویسی اندروید حسگرهای (سنسورهای) گوشی، در برنامه نویسی اندروید ساخت امکانات جانبی (جستجو، لیست علاقه مندی، لوگو، منو و ...) برای برنامه اندروید مباحث عمومی در برنامه نویسی اندروید
کار با Activity ها ، در برنامه نویسی اندروید
1
طراحی فایل های xml متناظر با Activity ها و ... (لایه گرافیکی Activity ها و ...)، در برنامه نویسی اندروید
5
عنصرهای گرافیکی مختلف، در برنامه نویسی اندروید
1
نمایش عکس و کار بار ImageView ، در برنامه نویسی اندروید
1
پردازش تصویر، در برنامه نویسی اندروید
1
نمایش متن و کار با رشته ها (strings) و TextView ، در برنامه نویسی اندروید
5
ساخت لیست (فهرست) با ListView ، در برنامه نویسی اندروید
2
ساخت EditText، در برنامه نویسی اندروید
1
کار با صدا و فایل های صوتی (پخش، ضبط و ...)، در برنامه نویسی اندروید
2
نمایش انیمیشن (با متن یا عکس)، در برنامه نویسی اندروید
3
گرافیک دو بعدی (2D) و سه بعدی (3D)، در برنامه نویسی اندروید
17
بازی سازی، در برنامه نویسی اندروید
16
به اشتراک گذاری (share)، در برنامه نویسی اندروید
1
نمایش پیام به کاربر، در برنامه نویسی اندروید
2
ویژگی های صفحه نمایش و چرخش آن، در برنامه نویسی اندروید
1
عملیات های ریاضی در برنامه نویسی اندروید
1
Fragment ها در برنامه نویسی اندروید
1
Thread ها در برنامه نویسی اندروید
2
سرویس ها (Service) در برنامه نویسی اندروید
1
حسگرهای (سنسورهای) گوشی، در برنامه نویسی اندروید
2
ساخت امکانات جانبی (جستجو، لیست علاقه مندی، لوگو، منو و ...) برای برنامه اندروید
1
مباحث عمومی در برنامه نویسی اندروید
16
بستن منو
۲۴
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
مباحث اولیه برای آشنایی با برنامه نویسی java
14
انواع متغیرها و تبدیل متغیرها در java
2
رشته ها (string) در java
1
اعداد در java
4
مباحث عمومی در java
3
بستن منو
۲۶۲
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
مجموعه ویدئوهای آموزشی برنامه نویسی Java برای مبتدیان - مجموعه Java (Beginner) Programming Tutorials - از thenewboston.com
87
مجموعه ویدئوهای آموزشی برنامه نویسی Java (سطح متوسط) - مجموعه Java (Intermediate) Tutorials - از thenewboston.com
59
مجموعه ویدئوهای آموزشی Java - مجموعه Learn Java
24
مجموعه ویدئوهای آموزشی طراحی GUI در Java ، با استفاده از JavaFX - مجموعه JavaFX Java GUI Design Tutorials - از thenewboston.com
35
مجموعه ویدئوهای آموزشی توسعه بازی با استفاده از Java - مجموعه Java Game Development Tutorials - از thenewboston.com
36
مجموعه ویدئوهای آموزشی توسعه بازی در Java ، با استفاده از Slick - مجموعه Java Game Development with Slick - از thenewboston.com
21
بستن منو
۲۰
تعداد کلیدهای این موضوع
لیست همه کلیدهای این موضوع
آموزش کامل یونیتی (Unity) (بازی سازی)
15
آموزش یونیتی (Unity) - سطح متوسط
2
پرداخت درون برنامه ای، در یونیتی (Unity)
1
یونیتی (Unity) و برنامه نویسی اندروید
1
واقعیت مجازی در یونیتی (Unity)
1

فروشگاه های اندروید ایرانی

فروشگاه های ایرانی برنامه های اندروید که می توانید برنامه های اندروید خود را در آنها بفروش بگذارید (به ترتیب نام) :



*** در صورت تاسیس یک فروشگاه ایرانی جدید، به ما اطلاع بدهید تا در لیست بالا قرار داده شود.

آخرین ارسال های انجمن (در زمینه برنامه نویسی اندروید)

آخرین ارسال های انجمن (در زمینه برنامه نویسی اندروید)
موضوع تاریخ و زمان نویسنده آخرین ارسال تعداد پاسخ انجمن
کاهش در آمد توسعه دهندگان از بازار و تبلیغات عدد
دیروز, ۰۸:۰۷ ب.ظ
alizzz
coleus.moon
4 فروشگاه های برنامه های اندروید (ایرانی و خارجی)
مشکل در ایچاد پوشه نصب
۱۳۹۵/۰۹/۱۹, ۱۱:۵۹ ب.ظ
sabanetaria
sabanetaria
0 برنامه نویسی اندروید
استفاده از int در shared prefrences در برنامه نویسی اندروید
۱۳۹۵/۰۹/۱۹, ۰۹:۴۹ ب.ظ
hassan8971
hassan8971
0 مشکلات در برنامه نویسی اندروید
ربات تلگرام ترجمه عکس
۱۳۹۵/۰۹/۱۹, ۱۲:۳۴ ق.ظ
robotbin
robotbin
0 برنامه نویسی اندروید
ربات تلگرام Stack overflow
۱۳۹۵/۰۹/۱۹, ۱۲:۲۵ ق.ظ
robotbin
robotbin
0 برنامه نویسی اندروید
مشکل با زامارین در ویژوال استودیو 2015
۱۳۹۵/۰۹/۱۷, ۰۷:۱۴ ب.ظ
me64
me64
1 مشکلات در برنامه نویسی اندروید
بالا نیومدن نقشه گوگل در برنامه
۱۳۹۵/۰۹/۱۷, ۰۹:۴۶ ق.ظ
amard
amard
0 مشکلات در برنامه نویسی اندروید
لینک دادن از وب به اندروید
۱۳۹۵/۰۹/۱۷, ۰۴:۰۷ ق.ظ
hamrahna
hamrahna
7 مشکلات در برنامه نویسی اندروید
فهرست بندی کتاب
۱۳۹۵/۰۹/۱۶, ۰۵:۱۷ ب.ظ
سعدی
سعدی
0 انتقال بین Activity ها و تبادل اطلاعات بین Activity ها، در برنامه نویسی اندروید
چیدمان باتن ها (Buttons) و تغییر اندازه آنها در صفحه نمایش های مختلف (در اندروید)
۱۳۹۵/۰۹/۱۵, ۰۹:۰۹ ب.ظ
foad.pezeshkian
mrazhdari
16 مشکلات در برنامه نویسی اندروید
مشکل در ارسال مقدار در اکتیویتی دیگر
۱۳۹۵/۰۹/۱۵, ۰۶:۲۹ ب.ظ
af94
Hossein8867
1 مشکلات در برنامه نویسی اندروید
مشکل در استفاده از دیتابیس خارجی
۱۳۹۵/۰۹/۱۵, ۰۱:۴۷ ب.ظ
saeedfozol
saeedfozol
3 مشکلات در برنامه نویسی اندروید
جستجو در ListActivity
۱۳۹۵/۰۹/۱۴, ۰۹:۱۲ ب.ظ
Hossein8867
Hossein8867
0 مشکلات در برنامه نویسی اندروید
مشکل نصب اندروید استدیو
۱۳۹۵/۰۹/۱۲, ۱۱:۳۲ ق.ظ
mohsenfirewall
mohsenfirewall
0 مشکلات در برنامه نویسی اندروید
راهنمایی در مورد Notifications
۱۳۹۵/۰۹/۱۱, ۱۲:۳۳ ب.ظ
dibdab
dibdab
0 برنامه نویسی اندروید
مشکل در اینتنت های بازار
۱۳۹۵/۰۹/۰۸, ۰۱:۳۶ ق.ظ
sabanetaria
dibdab
2 برنامه نویسی اندروید
ساخت ویدئو پلیر در اندروید
۱۳۹۵/۰۹/۰۷, ۰۷:۰۴ ب.ظ
ehsansalehi2001
dibdab
1 پخش فایل های صوتی و تصویری، در برنامه نویسی اندروید
پرداخت درون برنامه ای بازار در onDestroy
۱۳۹۵/۰۹/۰۶, ۰۶:۵۲ ب.ظ
Hossein8867
Hossein8867
0 مشکلات در برنامه نویسی اندروید
استخراج کننده فایل نصبی apk
۱۳۹۵/۰۹/۰۵, ۰۶:۵۰ ب.ظ
kama90
kama90
0 مشکلات در برنامه نویسی اندروید
سوال درباره surfaceView ؟
۱۳۹۵/۰۹/۰۵, ۱۱:۱۷ ق.ظ
ilalia
ilalia
0 مشکلات در برنامه نویسی اندروید
سیاه نشان دادن الرت دیالوگ در اندروید 6
۱۳۹۵/۰۹/۰۳, ۱۱:۰۴ ب.ظ
armin20013
armin20013
1 مشکلات در برنامه نویسی اندروید
موقعیت آیتم منو
۱۳۹۵/۰۹/۰۱, ۰۹:۳۲ ب.ظ
Hossein8867
Hossein8867
0 مشکلات در برنامه نویسی اندروید
نمایش درختی اطلاعات دیتابیس
۱۳۹۵/۰۹/۰۱, ۱۰:۲۱ ق.ظ
amard
amard
0 ساخت ListView در برنامه نویسی اندروید
کار با ریسایلکرویو
۱۳۹۵/۰۸/۳۰, ۰۲:۱۳ ق.ظ
hamidreza2000
hamidreza2000
0 مشکلات در برنامه نویسی اندروید
اعمال یک انیمیشن در زمان کلیک بر روی آیتم های یک gridview
۱۳۹۵/۰۸/۲۹, ۰۳:۵۰ ب.ظ
sonic
sonic
0 مشکلات در برنامه نویسی اندروید
مشاهده 1000 ارسال آخر انجمن (در زمینه برنامه نویسی اندروید)

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)