کلیدستان

نسخه‌ی کامل: ساخت برنامه اندروید مانند دیکشنری
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام.
من برنامه ای میخوام درست کنم مثل دیکشنری ولی چون کلمات کمی داره نیازی به دیتابیس نیست.
مثلا اگه کاربر نوشت : "edit" بگه "ویرایش" و اگه نوشت : "ویرایش" بگه "edit"
اگه نخوام از if و else استفاده کنم، با چه کدی میتونم این کار کنم؟
سلام.
اگر قصد ندارید از پایگاه داده استفاده کنید، راه های زیر به ذهن بنده می رسد :

1- استفاده از فایل strings.xml که در آن، با یک نامگذاری خاص، زوج مقادیر را تعریف می کنیم. مثلا اگر 500 کلمه است، از A_1 تا A_500 برای کلمات اصلی و از B_1 تا B_500 ، کلمات متناظر با آنها.

2- می توانیم آنها را به صورت یک متغیر سراسری تعریف کنیم. یعنی دو آرایه (Array) از جنس رشته (String)، به صورت سراسری تعریف می کنیم و بعد در Activity یا Activity های مورد نظرمان، به آنها ارجاع می دهیم :

کلید شماره 343

3- استفاده از HashMap :

کلید شماره 3002

از HashMap به صورت سراسری (global) نیز میشه استفاده کرد، یعنی آن را به صورت سراسری تعریف می کنید (یعنی استفاده از شماره 2 که ذکر کردم). این طوری یک HashMap دارید که زوج مقادیر در آن ذخیره شده و سراسری هم هست و کدهای آن در کدهای Activity های برنامه اندروید، تداخلی نخواهد داشت (که شلوغ شود).

4- استفاده از SharedPreferences :

کلید شماره 288

5- ذخیره در فایل متنی (ساده یا با ساختار json یا ...)

 
(۱۳۹۳/۱۲/۱۱, ۰۷:۰۲ ب.ظ)'admin' نوشته: [ -> ]سلام.
اگر قصد ندارید از پایگاه داده استفاده کنید، راه های زیر به ذهن بنده می رسد :

1- استفاده از فایل strings.xml که در آن، با یک نامگذاری خاص، زوج مقادیر را تعریف می کنیم. مثلا اگر 500 کلمه است، از A_1 تا A_500 برای کلمات اصلی و از B_1 تا B_500 ، کلمات متناظر با آنها.

2- می توانیم آنها را به صورت یک متغیر سراسری تعریف کنیم. یعنی دو آرایه (Array) از جنس رشته (String)، به صورت سراسری تعریف می کنیم و بعد در Activity یا Activity های مورد نظرمان، به آنها ارجاع می دهیم :

کلید شماره 343

3- استفاده از HashMap :

کلید شماره 3002

از HashMap به صورت سراسری (global) نیز میشه استفاده کرد، یعنی آن را به صورت سراسری تعریف می کنید (یعنی استفاده از شماره 2 که ذکر کردم). این طوری یک HashMap دارید که زوج مقادیر در آن ذخیره شده و سراسری هم هست و کدهای آن در کدهای Activity های برنامه اندروید، تداخلی نخواهد داشت (که شلوغ شود).

4- استفاده از SharedPreferences :

کلید شماره 288

5- ذخیره در فایل متنی (ساده یا با ساختار json یا ...)

 

 

خیلی ممنون از راهنماییتون 
حلقه for  رو چجوری میتونم توی hashmap استفاده کنم؟
که از یه edit text متن رو بگیره و اگه با key برابر باشه، value اون رو چاپ کنه.
نیازی به استفاده از حلقه for نیست، تنها کافی است که کلمه را از EditText دریافت کرده و مقدار معادل آن را از HashMap فراخوانی کنید. مثلا در همان کلید شماره 3002 ، کد زیر را ببینید :

کد پی‌اچ‌پی:
String value = (String) myHashMap.get("Color1"); 

مقدار معادل Color1 فراخوانی شده و در متغیر value ذخیره می شود.


 
(۱۳۹۳/۱۲/۱۲, ۰۴:۰۵ ب.ظ)'admin' نوشته: [ -> ]نیازی به استفاده از حلقه for نیست، تنها کافی است که کلمه را از EditText دریافت کرده و مقدار معادل آن را از HashMap فراخوانی کنید. مثلا در همان کلید شماره 3002 ، کد زیر را ببینید :

کد پی‌اچ‌پی:
String value = (String) myHashMap.get("Color1"); 

مقدار معادل Color1 فراخوانی شده و در متغیر value ذخیره می شود.


 

 

توی حجم بالا اذیت نمیکنه؟
یعنی اگه 500 تا کلمه باشه باید این خط رو 500 بار تکرار کنیم.

 
برای فراخوانی تنها باید یک خط کد نوشته شود، ولی برای تعریف ابتدایی داده ها (مثلا به صورت سراسری)، باید 500 کلمه ذکر شوند (تنها یک بار آنها را به صورت سراسری تعریف می کنیم، بعد فراخوانی ساده خواهد بود). 

(۱۳۹۳/۱۲/۱۲, ۰۸:۲۲ ب.ظ)'admin' نوشته: [ -> ]برای فراخوانی تنها باید یک خط کد نوشته شود، ولی برای تعریف ابتدایی داده ها (مثلا به صورت سراسری)، باید 500 کلمه ذکر شوند (تنها یک بار آنها را به صورت سراسری تعریف می کنیم، بعد فراخوانی ساده خواهد بود). 



 

خب مشکل منم همینجاس. 
500 کلمه رو تعریف میکنم. بعد واسه هر کلمه باید فراخوانی کنم.
چون این خط فقط یک کلمه رو بر میگردونه. 
String value = (String) myHashMap.get("Color1");
 
مگر کاربر ((تنها یک کلمه)) را در EditText وارد نمی کند ؟
پس فراخوانی هم تنها برای یک کلمه خواهد بود.
شما کدی می نویسید که کلمه وارد شده را از EditText دریافت کرده و بعد در همان یک خط کد، قرار داده می شود و معادل آن را از HashMap دریافت می کنیم.
شاید شما ساختار دیگری مد نظرتون هست ؟ 
شاید قصد دارید که لیست کلمات را به کاربر نمایش بدهید ؟ برای این منظور، لینک زیر را ببینید :

http://stackoverflow.com/questions/89098...in-android

(۱۳۹۳/۱۲/۱۲, ۰۹:۳۲ ب.ظ)'admin' نوشته: [ -> ]مگر کاربر ((تنها یک کلمه)) را در EditText وارد نمی کند ؟
پس فراخوانی هم تنها برای یک کلمه خواهد بود.
شما کدی می نویسید که کلمه وارد شده را از EditText دریافت کرده و بعد در همان یک خط کد، قرار داده می شود و معادل آن را از HashMap دریافت می کنیم.
شاید شما ساختار دیگری مد نظرتون هست ؟ 
شاید قصد دارید که لیست کلمات را به کاربر نمایش بدهید ؟ برای این منظور، لینک زیر را ببینید :

http://stackoverflow.com/questions/89098...in-android



 

ممنون.. مشکلم حل شد 
فقط یه سوال دیگه.
myHashMap.put("Color1","Red");
وقتی من "color1" وارد میکنم میگه "Red".
ولی برعکس اینو نمیده.
چطور میتونم وقتی "Red" وارد کردم هم بگه "color1" ??
(۱۳۹۳/۱۲/۱۲, ۱۰:۴۴ ب.ظ)'ahh90' نوشته: [ -> ]فقط یه سوال دیگه.
myHashMap.put("Color1","Red");
وقتی من "color1" وارد میکنم میگه "Red".
ولی برعکس اینو نمیده.
چطور میتونم وقتی "Red" وارد کردم هم بگه "color1" ??



 

لینک های زیر را ببینید :

http://stackoverflow.com/questions/81129...-the-value

http://stackoverflow.com/questions/13837...from-value

(۱۳۹۳/۱۲/۱۶, ۰۳:۲۸ ب.ظ)'admin' نوشته: [ -> ]
(۱۳۹۳/۱۲/۱۲, ۱۰:۴۴ ب.ظ)'ahh90' نوشته: [ -> ]فقط یه سوال دیگه.
myHashMap.put("Color1","Red");
وقتی من "color1" وارد میکنم میگه "Red".
ولی برعکس اینو نمیده.
چطور میتونم وقتی "Red" وارد کردم هم بگه "color1" ??




 

لینک های زیر را ببینید :

http://stackoverflow.com/questions/81129...-the-value

http://stackoverflow.com/questions/13837...from-value



 

خیلی ممنون  مشکلم حل شد.
مـــرســـــی