انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
طراحی های مختلف در linearLayout

طراحی های مختلف در linearLayout

#1
Question 
من تازه کارم و میخام یه برنامه ی آزمون بنویسم که تو صفحه یه سوال باشه با 4 تا رادیو باتون و یه دکمه که اگه درست جواب داد و یا اشتباه بره به صفحه بعد و سوال بعد و آخرصب اشتباهاشو و امتیازشو نشون بده،من میخام همه ی مراحل آزمون تو یه xml  و یک activity باشه و توی LinearLayout این کارو بکنم،طراحی و تعریف کردن آیدی رو بلدم ولی کد اصلی که با حلقه و شرط هست رو مشکل دارم نمی دونم چه جوری بنویسم.

[عکس: heart.gif] لطفا راهنماییم کنید [عکس: heart.gif]
پاسخ

طراحی های مختلف در linearLayout

#2
سلام دوست عزیز
شما میتونید از یه صفحه ی ساده برای این کار استفاده کنید
که شامل یه تکست ویو برای سوال
 و چهار تا چک باکس یا ردیو باتن برای گزینه هاتون
و دو تا دکمه برای صفحه ها

سوالاتون رو نمیدونم چطوری میخوایید لود کنید ولی من چند تا راه ساده بهتون پیشنهاد میکنم
1. بهترین راهش اینه که یه دیتابیس بسازید و از دیتابیس استفاده کنید (که اگه تازه وارد هستید شاید یه خورده گیج کننده باشه براتون )
برای ساخت دیتابیس و نحوه ی استفاده از اون میتونید از این کلید ها استفاده کنید .


2. میتونید ازفایل تکست استفاده کنید که بنظرم روش خوبیه
 

3.و ساده ترین روش و بی دردسر ترینش که البته اصولی نیست اینه که سوالات رو داخل خود برنامه کپی کنی به صورت رشته یا ArrayList

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

حالا کافیه یه عدد رو به عنوان شماره سوال در نظر بگیرد و باز هر بار زدن دکمه ها اون شماره رو کم یا زیاد کنید و دنبال این کمو زیاد کردن متن داخل تکست ویو رو عوض کنی

حالا باید گزینه های انتخاب شده رو یه جایی نگه داری تا بتونی در اخر بگی درسته یا اشتباه این رو هم کافیه یه ارای لیست در نظر بگیری و عدد های 0تا 4 رو داخلش بزاری با استفاده از همین چک باکس اگه 0 بود پاسخ داده نشده و اگه یکی از گزینه های 1 تا 4 باشه ینی پاسخ داده شده و باید با کلید سوالهایی ک داری مطابقت بدی
کدی که اینجا توضیح دادم رو مینویسم براتون به یه شکل ساده ; میتونید اونو تغییر بدید و به شکل دلخواه در بیارید

کد:
  int count = 0 ;
   ArrayList<Integer> answers , Question_key ;
   ArrayList<String> Question_text ;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.test);
       answers = new ArrayList<>();

       Question_text = new ArrayList<>() ;
       Question_key = new ArrayList<>() ;

       Question_text.add("سوال 1");//اضاقه کردن سوال ها
       Question_key.add(1);//اضاف کردن کلید سوال ها
       Question_text.add("سوال 2");
       Question_key.add(4);
       Question_text.add("سوال 3");
       Question_key.add(2);
       Question_text.add("سوال 4");
       Question_key.add(3);
       Question_text.add("سوال 5");
       Question_key.add(3);

       for (int i = 0 ; i<Question_text.size() ; i++){
           answers.add(0);//اضافه کردن پاسخ 0
       }

       final TextView tvQuestion = (TextView)findViewById(R.id.question);
       final RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radiogroup);

       radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(RadioGroup group, int checkedId) {
               int answer = 0 ;
               switch (checkedId){
                   case R.id.radio1 :
                       answer = 1 ; // تنظیم پاسخ
                       break;
                   case R.id.radio2 :
                       answer = 2 ;
                       break;
                   case R.id.radio3 :
                       answer = 3 ;
                       break;
                   case R.id.radio4 :
                       answer = 4 ;
                       break;
               }
               answers.remove(count); // حذف پاسخ قبلی
               answers.add(count,answer); //اضافه کردن پاسخ جدید
           }
       });
       final RadioButton radioButton1 = (RadioButton)findViewById(R.id.radio1);
       final RadioButton radioButton2 = (RadioButton)findViewById(R.id.radio2);
       final RadioButton radioButton3 = (RadioButton)findViewById(R.id.radio3);
       final RadioButton radioButton4 = (RadioButton)findViewById(R.id.radio4);


       final Button btn_next = (Button)findViewById(R.id.next);
       final Button btn_previous = (Button)findViewById(R.id.previous);
       btn_next.setText("بعدی");
       btn_previous.setText("قبلی");
       tvQuestion.setText(Question_text.get(count));
       btn_next.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               if (Question_text.size()-1>count) {
                   count++;
                   tvQuestion.setText(Question_text.get(count));
                   btn_previous.setActivated(true);
                   radioButton1.setChecked(answers.get(count) == 1);//علامت زدن پاسخ قبلی
                   radioButton2.setChecked(answers.get(count) == 2);//
                   radioButton3.setChecked(answers.get(count) == 3);//
                   radioButton4.setChecked(answers.get(count) == 4);//
               }else if(Question_key.size()-1>=count){
                   count++;
                   btn_next.setText("پایان");//تغییر متن دکمه ی بعدی بع پایان
               }else {// نمایش نتیجه و پاسخ نامه
                   radioGroup.setVisibility(View.INVISIBLE);
                   btn_next.setVisibility(View.INVISIBLE);//مخفی کردن دکمه ها
                   btn_previous.setVisibility(View.INVISIBLE);
                   String answer_sheet = "پاسخ صحیح - پاسخ شما" ;
                   for (int i = 0 ; i<answers.size() ; i++){
                       answer_sheet+="\n"+ answers.get(i) + " - " + Question_key.get(i);
                   }
                   tvQuestion.setText(answer_sheet);
               }
           }
       });

       btn_previous.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               if (count>0) {
                   count--;
                   btn_next.setText("بعدی");
                   tvQuestion.setText(Question_text.get(count));
                   radioButton1.setChecked(answers.get(count)==1);
                   radioButton2.setChecked(answers.get(count)==2);
                   radioButton3.setChecked(answers.get(count)==3);
                   radioButton4.setChecked(answers.get(count)==4);
               }else{
                   btn_previous.setActivated(false);
               }
           }
       });

   }

موفق باشید
پاسخ
 سپاس شده توسط admin

طراحی های مختلف در linearLayout

#3
(۱۳۹۵/۰۲/۳۱, ۰۹:۲۵ ق.ظ)aliasghar نوشته:
کد:
  int count = 0 ;
   ArrayList<Integer> answers , Question_key ;
   ArrayList<String> Question_text ;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.test);
       answers = new ArrayList<>();

       Question_text = new ArrayList<>() ;
       Question_key = new ArrayList<>() ;

       Question_text.add("سوال 1");//اضاقه کردن سوال ها
       Question_key.add(1);//اضاف کردن کلید سوال ها
       Question_text.add("سوال 2");
       Question_key.add(4);
       Question_text.add("سوال 3");
       Question_key.add(2);
       Question_text.add("سوال 4");
       Question_key.add(3);
       Question_text.add("سوال 5");
       Question_key.add(3);

       for (int i = 0 ; i<Question_text.size() ; i++){
           answers.add(0);//اضافه کردن پاسخ 0
       }

       final TextView tvQuestion = (TextView)findViewById(R.id.question);
       final RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radiogroup);

       radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(RadioGroup group, int checkedId) {
               int answer = 0 ;
               switch (checkedId){
                   case R.id.radio1 :
                       answer = 1 ; // تنظیم پاسخ
                       break;
                   case R.id.radio2 :
                       answer = 2 ;
                       break;
                   case R.id.radio3 :
                       answer = 3 ;
                       break;
                   case R.id.radio4 :
                       answer = 4 ;
                       break;
               }
               answers.remove(count); // حذف پاسخ قبلی
               answers.add(count,answer); //اضافه کردن پاسخ جدید
           }
       });
       final RadioButton radioButton1 = (RadioButton)findViewById(R.id.radio1);
       final RadioButton radioButton2 = (RadioButton)findViewById(R.id.radio2);
       final RadioButton radioButton3 = (RadioButton)findViewById(R.id.radio3);
       final RadioButton radioButton4 = (RadioButton)findViewById(R.id.radio4);


       final Button btn_next = (Button)findViewById(R.id.next);
       final Button btn_previous = (Button)findViewById(R.id.previous);
       btn_next.setText("بعدی");
       btn_previous.setText("قبلی");
       tvQuestion.setText(Question_text.get(count));
       btn_next.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               if (Question_text.size()-1>count) {
                   count++;
                   tvQuestion.setText(Question_text.get(count));
                   btn_previous.setActivated(true);
                   radioButton1.setChecked(answers.get(count) == 1);//علامت زدن پاسخ قبلی
                   radioButton2.setChecked(answers.get(count) == 2);//
                   radioButton3.setChecked(answers.get(count) == 3);//
                   radioButton4.setChecked(answers.get(count) == 4);//
               }else if(Question_key.size()-1>=count){
                   count++;
                   btn_next.setText("پایان");//تغییر متن دکمه ی بعدی بع پایان
               }else {// نمایش نتیجه و پاسخ نامه
                   radioGroup.setVisibility(View.INVISIBLE);
                   btn_next.setVisibility(View.INVISIBLE);//مخفی کردن دکمه ها
                   btn_previous.setVisibility(View.INVISIBLE);
                   String answer_sheet = "پاسخ صحیح - پاسخ شما" ;
                   for (int i = 0 ; i<answers.size() ; i++){
                       answer_sheet+="\n"+ answers.get(i) + " - " + Question_key.get(i);
                   }
                   tvQuestion.setText(answer_sheet);
               }
           }
       });

       btn_previous.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               if (count>0) {
                   count--;
                   btn_next.setText("بعدی");
                   tvQuestion.setText(Question_text.get(count));
                   radioButton1.setChecked(answers.get(count)==1);
                   radioButton2.setChecked(answers.get(count)==2);
                   radioButton3.setChecked(answers.get(count)==3);
                   radioButton4.setChecked(answers.get(count)==4);
               }else{
                   btn_previous.setActivated(false);
               }
           }
       });

   }

موفق باشید


دوست عزیز من از شما خیلی خیلی متشکرم که کمکم کردید ولی توی چند تا کد به خطا خوردم;این کد
کد:
btn_previous.setActivated(true);
 کد رو هم با ctrl+space تغییر دادم ولی درست نشد،ولی وقتی که اون کد رو کامنت کردم برنامه اجرا شد
کد:
((Object) btn_previous).setActivated(false);
در پایان که نتیجه نمایش داده میشه فقط سه گزینه اول رو نشون میده.
ممنون میشم یه توضیحی در مورد کار کرد این کد بدید و یه خواهش دیگه هم دارم ; این که در پایان که نتیجه نشون داده میشه چه طور میشه هر سوال و گزینه هاش نمایش داده بشه و گزینه ای که کاربر انتخاب کرده درسته بوده یا نه "عکس رو ضمیمه کردم"و دکمه برگشت برای کاربر غیر فعال باشه.
من هنوز وقت نکردم که این کدها رو روی پروژه م اعمال کنم،ولی در اولین فرصت انجام میدم و به اطلاعتون میرسونم.*باز هم از شما متشکرم*


فایل‌های پیوست

عکس(ها)
   
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان