اطلاعیه

کاربر گرامی

به انجمن برنامه نویسی AnswerCenter.ir خوش آمدید

 برای استفاده از تمامی امکانات سایت لطفا در انجمن عضو شوید


Gray Mind

مدیر بخش
  • تعداد ارسال ها

    563
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    19

آخرین بار برد Gray Mind در بهمن 26

Gray Mind یکی از رکورد داران بیشترین تعداد پسند مطالب است !

1 دنبال کننده

درباره Gray Mind

  • درجه
    کاربر حرفه ای

آخرین بازدید کنندگان نمایه

5,429 بازدید کننده نمایه
  1. اول اینکه همونطور که جناب شاهپیری گفتن از یه List یا ArrayList استفاده کنید من تاحالا با این روش کار نکردم و منطقی هم نیست به نظرم یه کلاس بسازید به این صورت : public class DataModel{ private String name; private String title_news; private String url; public void setName(String name){ this.name = name; } public void setTitleNews(String title_news){ this.title_news = title_news; } public void setUrl(String url){ this.url = url; } public String getName(){ return name; } public String getTitleNews(){ return title_news; } public String getUrl(){ return url; } } حالا ArrayAdapter رو از نوع استرینگ نذار و اینطوری تعریفش کن public class MyArrayAdapter extends ArrayAdapter<DataModel>{ ArrayList<DataModel> mList = new ArrayList<DataModel>(); public MyArrayAdapter(Context context, ArrayList<DataModel> myList){ super(context, R.layout.adapter_layout, myList); mList = myList; } public View getViews(int position, ...){ textView.setText(mList.get(position).getTitleNews()); } } حالا برای بار های بعد اگه بخوای لیستت رو آپدیت کنی باید اینطوری آپدیتش کنی adapter = new MyArrayAdapter(this, list); adapter.notifyDataSetChanged(); این باید جواب بده البته حالا که کداتو نوشتی و نمیخوای عوضشون کنی سعی کن به آرایه قبلیت اضافه کنی جدید هارو و notifyDataSetChanged رو صدا بزن ببین تاثیری داره یا نه موفق باشی
  2. نیازی به این همه کتاب و این چیزا نیست دوست عزیز همه مون اولش مثل شما بودیم و سر چند راهی گیر کرده بودیم اول اینکه شما چند وقته دارید آموزش هارو میبینید و دوتا پک آموزشی هم تموم کردی یه سوال چرا برنامه ای ننوشتید؟ و وقتی کد نمیزنید چطور انتظار دارید برنامه نویسی رو درک کنید؟ ساختار یه برنامه رو درک کنید؟ بشینید و چندتا برنامه ی تمرینی بنویسید مثلا دفترچه یادداشت که میتونید توش کار با دیتابیس و ساخت تنظیمات رو یاد بگیرید یا مثلا یه گالری تصاویر و... بذار یه چیزی رو بهتون بگم داداشم تا وقتی دست به کد نشدی هیچ چیزی یاد نمیگیری تو برنامه نویسی دونستن مفاهیم و خوندن و به روز بودن و حتی دونستن چگونگی کارکرد برنامه ها خوبه که هیچ عالیه اما تا وقتی شما نتونی تبدیل به کد بکنیشون هیچ ارزشی نداره و دنیا پره از آدمایی که فقط میخونن اما عمل ندارن ... نصیحت من به شما اینه که اول بشینی یه پروژه تمرینی بنویسی دوم اینکه هرجا ارور یا مشکلی داشتی سرچ کنی ( با استک اورفلو و سایت های ارائه راه حل آشنا شو ) و مهمتر از همه اینکه خودتو درگیر دوراهی ها و... نکن یهو خودتو بنداز وسط ببین چند چندی موفق باشی
  3. هیچ هزینه ای از شما نمیگیرن هرتعداد برنامه و بازی میتونید بذارید آپدیت کنید و... فقط سالانه 40 هزار تومان حق عضویت و فعالیت باید بپردازید
  4. یه راهش اینه که شما یه کلاس interface بسازید و توی اکتیویتی یا فرگمنتی که میخواید مقادیر اداپتر رو بگیرید Implement کنید و در کانستراکتور(متد سازنده ی اداپتر) یک نمونه از این اینترفیس رو بگیرید و در آخر ازش استفاده کنید به ترتیب اول یه کلاس اینترفیس میسازیم : public interface GetValue{ void ItemValue(String value); // mitone har data type bashe : int value , String value and ... } دوم اکتیویتی رو ایمپلمنت میکنیم و ازش استفاده میکنیم : public class MainActivity extends AppCompatActivity implements GetValue{ public void onCreate(){ adapter = new RecyclerAdapter(list , this); // this baraye vorodie interface ke sakhtim hast chon activity ro implement kardim pas this ro midim behesh recyclerview.setAdapter(adapter); } @Override public void ItemValue(String value){ // inja mitoni az meghdar value estefade koni } } سوم ازش توی اداپتر بهش مقدار میدیم : public class recyclerAdapter(){ private GetValue mListener; public recyclerAdapter(List list , GetValue listener){ this.mListener = listener; } public void onBindViewHolder(ViewHolder holder){ holder.item.setOnClickListener(new View.onClickListener{ public void onClick(){ mListener.ItemValue(holder.item.getText().toString()); // inja behesh meghdar ro midim } }) } } موفق باشی
  5. اصولا وقتی دارید مینویسید اگه از داخل باکس پیشنهادی enter بزنید خودش خودکار ایمپورت میکنه و نیازی نیست شما اینکارو بکنید اما وقتی دستی مینویسید میتونید با کلیک روش و زدن alt+enter کتابخونه رو ایمپورت کنید موفق باشید
  6. کاربردش برای دسترسی به همه ی مقادیر آرایه ها ، لیست ها و... هستش برای مثال شما ده تا عدد دارید و میخواید از همه شون استفاده کنید برای کار خاصی خوب مسلما شما نمیای و ده تا عدد رو برای هرکدوم یه متغیر تعریف کنید و میاید و به صورت آرایه تعریفش میکنید ما این اعداد رو داریم : 1,8,4,20,48,12,35,48,17,79 خوب فرض کنید توی یه آرایه این هارو مقدار دهی شده حالا خودمون تعریفش کردیم یا کدی که داریم مینویسیم همچین آرایه ای رو به ما داده (آرایه ی عددی و رشته ای فرقی نداره )و حالا میخوایم با هرکدوم از این عدد ها یه کاری رو انجام بدیم . هر خونه از آرایه یک اندیس داره که اندیس هر آرایه از عدد (0) شروع میشه تا (منهای 1 اندازه ی آرایه) که اینجا 10 هستش پس آخرین اندیس ما میشه 9 میایم و یه حلقه For یا doWhile تعریف میکنیم و با توجه به اندیسشون یه کاری رو انجام میدیم مثلا باهم جمعشون میکنیم خوب این یه مثال ساده بود که جاهای زیادی کاربرد داره موقع نوشتن برنامه ما با لیست های زیادی از جمله لیست مطالب و کار با دیتابیس و ... لازممون میشه مثال دیگه ای که میتونم بزنم ما یه پوشه داریم و توش چندتا آهنگ داریم میایم و مسیر همه ی آهنگ هارو میریزیم توی آرایه و توی حلقه ی for یا doWhile یکی یکی پاکشون میکنیم یا منتقلشون میکنیم یه پوشه ی دیگه امیدوارم تونسته باشم که مفهومشو منتقل کنم توصیه میکنم اول بخونید راجب این ها و بعد برید سمت کدنویسی وگرنه ممکنه گیجتون کنه موفق باشید
  7. Gray Mind

    کار باspiner

    این سورس رو که تو لینک زیر گذاشتم رو ببینید متوجه میشید چطوری باید یه اسپینر بسازید و...
  8. نه نیازی به پارس کردن دستی نیست همونطور که قبلا هم گفتم این کتابخونه هرچقدر هم تو در تو باشه کاملا خودکار پارس میکنه خوب شما کافیه یه مدل دیگه درست کنید دقیقا مثل CategoryModel و به نیاز چندتا متغیر که داخل جیسون آبجکت های لیست دوم هست تعریف میکنی SerializedName هارو ست میکنید و در آخر هم توی مدل اصلی میاید و یه متغیر از نوع اون کلاس مدل دوم تعریف میکنید و SerializedName رو برابر با اسم اون JsonArray میدین مثال زیر رو ببینید : ما این جیسون رو داریم : { "site":"answercenter" "users:[ { "id":1, "username":"Gray Mind", "name":"Benyamin" }, { "id":2, "username":" } ], "admin":{ "username":"izadi", "name":"Mehdi Izadi" } } خوب حالا ما سه تا کلاس مدل لازم داریم‌: SiteModel public class SiteModel { @SerializedName("site") @Expose private String site; @SerializedName("users") @Expose private ArrayList<UsersModel> users; @SerializedName("admin") @Expose private AdminModel admin; //getter setters } UsersModel : public class UsersModel{ @SerializedName("id") @Expose private int id; @SerializedName("username") @Expose private String username; @SerializedName("name") @Expose private String name; //getter setters } و در آخر AdminModel : public class AdminModel{ @SerializedName("username") @Expose private String username; @SerializedName("name") @Expose private String name; //getter setters } و درخواستمون هم همون مثل قبل هستش : @GET("EndPoint") Call<SiteModel> getSite(); به همین راحتی همه شون رو به صورت آبجکت برمیگردونه که البته یادتون نره getter و setter هارو هم بذارید همون getId و ... موفق باشید
  9. ارسال مقادیر فقط در حالت StringRequest امکان پذیر هستش و JsonArrayRequest همچین قابلیتی نداره شما میتونی یه کلاس بسازی و اکستندش کنی از Request یا StringRequest و مقادیر رو به همراهش بفرستی و دستی توی کلاسی که ساختین جیسون هارو پارس کنید تاحالا امتحان نکردم اما مطمئنن میشه اما پیشنهاد میکنم از کتابخانه ی رتروفیت استفاده کنید تا بتونید جیسون هارو به راحتی به صورت آبجکت تحویل بگیرید و به راحتی هم میتونید انواع مقادیر رو ارسال کنید موفق باشید
  10. پیشنهاد میدم استفاده از لیوت های استاندارد مثل LinearLayout رو یاد بگیرید که با وزن دادن میشه انواع لیوت های عمودی و افقی رو ساخت اما اگه بازم اصرار به درصد بندی دارید میتونید از این کتابخانه استفاده کنید : implementation 'com.android.support:percent:27.1.1' مثال : <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <Button android:id="@+id/button" android:text="Button" android:layout_height="wrap_content" android:layout_alignParentTop="true" app:layout_widthPercent="30%"/> <Button android:id="@+id/button2" android:text="Button 2" android:layout_height="wrap_content" android:layout_toRightOf="@id/button" app:layout_widthPercent="60%"/> <Button android:id="@+id/button3" android:text="Button 3" android:layout_height="wrap_content" android:layout_below="@+id/button" android:layout_alignParentStart="true" android:layout_alignParentLeft="true" app:layout_widthPercent="90%"/> </android.support.percent.PercentRelativeLayout>
  11. با سلام دوستان با دوره آموزشی رتروفیت پیشرفته در خدمت شما هستم تو این دوره سعی شده به صورت پیشرفته تر با رتروفیت کار کنیم و از قابلیت هاش به صورت بهینه تر استفاده کنیم یکی از مهمترین قابلیت های این کتابخونه اینه که شما یه کلاس مدل میسازید و رتروفیت به صورت خودکار جیسون هایی که از سرور گرفته رو Parse میکنه و به صورت آبجکت بهتون تحویل میده و این خودش میتونه کلی از کدنویسی هاتون رو کم کنه شما تو این دوره یاد میگیرید که چطور با یه API که آماده هستش کار کنید . مقادیر بهش ارسال کنید و جواب رو بگیرید، فایل آپلود کنید، یاد میگیریم چطور رتروفیت رو با RxJava مخلوط کنیم تا سرعت بیشتر بشه و به صورت مولتی ترد به سادگی کار کنیم . نکته ی مهم : تو این آموزش هیچگونه کدنویسی سمت سروری صورت نمیگیره و فرض رو بر این میذاریم که قبلا نوشته شده . عنوان هر قسمت به ترتیب : 1- آموزش متد گت 2- آموزش متد پست 3- آموزش آپلود عکس 4- آموزش ترکیب رتروفیت و RxJava --------------------------------------------------- آپشن هایی که میتوانید برای ارسال مقادیر به سرور استفاده کنید : @Path : برای جایگذاری مقدار در آدرس ای پی آی API : http://api.com/user/{username} Retrofit : @Path("username") String UserName @Query : برای ارسال مقادیر همراه متد گت API Sample Required : http://api.com/user/feed?123 Retrofit : @Query("feed") int FeedID @Field : برای ارسال مقادیر همراه متد پست @Map : برای ارسال مقادیر مانند هش مپ در اندروید @Part : برای ارسال فایل و مقادیر همراه فایل برای آپلود در سرور @Header : برای ارسال هدر به سرور (اگر نیاز بود) API Required Header : DeviceID , UserAgent there is a two type of declaration : Type 1 : StaticDeclaration Single Header : @Headers("deviceid: 132564") @GET("endpoint") Call<> .... Multi Header : @Headers({ "deviceid: 132564", "useragent: android-retrofitsample }) @GET("endpoint") Call<> .... Type 2 : DynamicDeclaration @GET("endpoint") Call<ResponseBody> sampleRequst(@Header("useragent") String UserAgent, @Header("deviceid") String DeviceID); --------------------------------------------------- آموزش ها به ترتیب در چند روز آینده اضافه میشه ... اگر آموزش دیگه ای به ذهنم رسید به لیست اضافه میکنم اگر آموزشی در رابطه با کتابخانه ی رتروفیت خواستید تو همین تاپیک یا پ.خ عنوان کنید تا در آینده به تاپیک اضافه ش کنم . موفق باشید
  12. سلام دوست عزیز طوری که من فهمیدم ریسایکلر ویو میاد و توی لیست ایتمایی که لایک نشده رو هم لایک شده نشون میده اگه ایتماتون زیاد باشه احتمالا هر هفت هشت آیتم یکی رو اینطوری نشون میده که میتونید با اضافه کردن کدای زیر به آداپترتون این مشکلو حل کنید : @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { return position; } موفق باشید
  13. این رو به فایل گریدلتون اضافه کنید قبل از jcenter() : google() احتمالا مشکلتون حل بشه در ضمن بیشتر پروکسی ها الان مشکل دارن سعی کنید از یه دونه بخرید 7 تومنه اگه لینک خواستید پ.خ بزنید بهتون لینک بدم برای خرید خودم یه ساله مشتریشم
  14. همیشه باید به قند شکن وصل باشید تا بتونه پروژه رو بیلد کنه راه هایی هست که آفلاین و از طریق کش میتونه بیلد کنه اما همیشگی نیست و باز هم بیشتر وقت ها نیاز به قند شکن هستش و اینکه دقیقا نمیدونم چرا اما هیچوقت با سایفون و فریگیت نشد بیلد بگیرم و تا جایی که میدونم جز چند نفر بقیه هم نتونستن . متوجه نشدم امولاتور رو بچسبونید؟ امولاتور رو که نمیشه چسبوند و فقط برای اجرای برنامه استفاده میشه احتمالا منظور شما محیط دیزاینر هستش که باید سمت چپ توی قسمت Project پوشه ی app رو باز کنی بعد src و بعد layout توی این پوشه همه ی لایوت هایی که برای اکتیویتی ها و... ساخته شده رو میتونید باز کنید و ادیت کنید و اینکه توی هر اکتیویتی توی متد onCreate نوشته setContentView(R.layout.activity); کلید ctrl رو بگیرید و روی activity کلیک کنید باز هم لایوتش رو باز میکنه دیگه همیشه لازم نیست از منوی پروژه دنبالش بگردید موفق باشید
  15. Gray Mind

    موتور بازی ساز یونیتی

    یادمه قبلا که نصب کرده بودمش همچین مشکلی برام پیش اومده بود و تو تنظیمات درستش کرده بودم یه سرچ زدم روش زیر رو آورد Edit -> Preferences -> External Tools -> External Script Editor Set to MonoDevelop or Browse.