بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

رادیو گروپ(کمک)

مدیریت گفتگو
mehdi31075 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام.من در viewpagerبرنامم یه radiogroupچهارتایی دارم که در برنامه setcheckedchangedبرای اون تعریف کردم و با دستور switch,caseگفتم که اگه رو اولی کلیک شد 1 امتیاز اگه رو دومی 2 امتیاز و ... امتیاز رو بریز تو متغیر score.

حالا مشکل من این جاست که تو هر پوزیشنی از ویوپیجر اگه چند بار رو رادیو گروپ ها کلیک کنم مقدار ها به جای این که جایگزین بشن روهم ریخته میشن.راهنمایی می کنید چه کدی بزنم تا تو هر پوزیشن مقدار scoreآخرین تغییر در وضعیت رادیو ها باشه؟

ممنون

نظرات

MeY3am 10 سال پیش
قبل از اینکه آیتم ها رو اضافه کنی بایدadapter رو clear کنید !
mehdi31075 10 سال پیش
@MeY3amمیشه واضح تر بگید.
MeY3am 10 سال پیش
کدهارو قرار بدین بهتر میشه راهنمایی کرد دوست من !
MeY3am 10 سال پیش
کدهارو قرار بدین بهتر میشه راهنمایی کرد دوست من !
mehdi31075 10 سال پیش
کد در قسمت پاسخ اضافه شد.

پاسخ‌ها 2

mehdi31075 10 سال پیش

 package com.mehdi31075.youngThinker.app.TestRavanshenasi;



import java.util.ArrayList;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

public class AdapterImagePager extends PagerAdapter {
public ArrayList<String> questions,answers,results;
public static TextView txtQuestion,txtG1,txtG2,txtG3,txtG4, txtCurrentPage;
public static RadioGroup rdg;
public static Button btnResult;
SharedPreferences variables;
public static Editor editor;

public AdapterImagePager(ArrayList<String> questions,ArrayList<String> answers,ArrayList<String> results){
this.questions=questions;
this.answers=answers;
this.results=results;
}
@Override
public int getCount() {
return questions.size();
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}

@Override
public Object instantiateItem(ViewGroup container , int position) {
View view = G.layoutInfalter.inflate(R.layout.sample, null);

txtQuestion =(TextView)view.findViewById(R.id.txtQuestion);
txtG1 =(TextView)view.findViewById(R.id.txtG1);
txtG2 =(TextView)view.findViewById(R.id.txtG2);
txtG3 =(TextView)view.findViewById(R.id.txtG3);
txtG4 =(TextView)view.findViewById(R.id.txtG4);
txtCurrentPage =(TextView)view.findViewById(R.id.txtCurrentPage);
rdg = (RadioGroup) view.findViewById(R.id.rdg);
btnResult = (Button)view.findViewById(R.id.btnResult);

rdg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio0:
G.score+=1;
break;
case R.id.radio1:
G.score+=2;
break;
case R.id.radio2:
G.score+=3;
break;
case R.id.radio3:
G.score+=4;
break;
}Log.i("log",""+ G.score+"");}
});
fontNumber();
txtQuestion.setText(questions.get(position));
txtG1.setText(answers.get((position*4)));
txtG2.setText(answers.get(((position*4)+1)));
txtG3.setText(answers.get(((position*4)+2)));
txtG4.setText(answers.get(((position*4)+3)));
txtCurrentPage.setText("تست شماره"+" "+(position+1)+" "+"از"+""+questions.size()+"تست.");
btnResult.setTypeface(G.rezvan);
if(position+1==questions.size()){
btnResult.setVisibility(view.VISIBLE);
txtCurrentPage.setVisibility(view.GONE);
}else{btnResult.setVisibility(view.GONE);
txtCurrentPage.setVisibility(view.VISIBLE);}
container.addView(view);
return view;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}

public static void fontNumber(){
if(ActivitySetting.txtNemoone==null){
txtG1.setTypeface(G.rezvan);
txtG2.setTypeface(G.rezvan);
txtG3.setTypeface(G.rezvan);
txtG4.setTypeface(G.rezvan);
txtQuestion.setTypeface(G.rezvan);
txtCurrentPage.setTypeface(G.rezvan);
}else{
txtQuestion.setTypeface(ActivitySetting.txtNemoone.getTypeface());
txtG1.setTypeface(ActivitySetting.txtNemoone.getTypeface());
txtG2.setTypeface(ActivitySetting.txtNemoone.getTypeface());
txtG3.setTypeface(ActivitySetting.txtNemoone.getTypeface());
txtG4.setTypeface(ActivitySetting.txtNemoone.getTypeface());
txtQuestion.setTypeface(ActivitySetting.txtNemoone.getTypeface());
txtCurrentPage.setTypeface(ActivitySetting.txtNemoone.getTypeface());
}
if(ActivitySetting.txtNemoone==null){
txtQuestion.setTextSize(15);
txtG1.setTextSize(15);
txtG2.setTextSize(15);
txtG3.setTextSize(15);
txtG4.setTextSize(15);
txtCurrentPage.setTextSize(15);
}else{
txtQuestion.setTextSize(ActivitySetting.txtNemoone.getTextSize());
txtG1.setTextSize(ActivitySetting.txtNemoone.getTextSize());
txtG2.setTextSize(ActivitySetting.txtNemoone.getTextSize());
txtG3.setTextSize(ActivitySetting.txtNemoone.getTextSize());
txtG4.setTextSize(ActivitySetting.txtNemoone.getTextSize());
txtCurrentPage.setTextSize(ActivitySetting.txtNemoone.getTextSize());
}
}
public void radioButtons(){

}
}


نظرات

hamidd 10 سال پیش
به جای G.score+=1 بنویسید G.score=1 و به جای G.score+=2 بنویسید G.score=1 و برای دوتای بعدی هم به همین صورت
hamidd 10 سال پیش
قابلیت ویرایش نیست :| تصحیح می کنم . به جای G.score+=1 بنویسید G.score=1 و به جای G.score+=2 بنویسید G.score=2 و برای دوتای بعدی هم به همین صورت
mehdi31075 10 سال پیش
@hamiddخب مشکل این جاست که رادیوگروپ من تو ویوپیجر هستش و هی باید مقدار شون به هم اضافه بشه
mehdi31075 10 سال پیش
@MeY3amممنون از راهنماییت و آموزشت.
MeY3am 10 سال پیش
خواهش میکنم، شما میتونید برای تشکر از vote لایک هم استفاده کنید !
MeY3am 10 سال پیش

بهترین کار اینه که رادیو باتن هارو درون یه آرایه قرار بدی و بجای switch case که اینجا جواب نمیده از if elseif استفاده کنید

به اینصورت :

 for (int i = 0; i < radioButtons.length; i++) {
            if (checkedId == radioButtons[0]) {
                G.score+=1;
                break;
            }
            else if (checkedId == radioButtons[1]) {
                G.score+=2;
                break;
            }
	    else if (checkedId == radioButtons[2]) {
                G.score+=3;
                break;
            }
            else if (checkedId == radioButtons[3]) {
                G.score+=4;
                break;
            }
        }

radioButtons -> آرایه ای از رادیو باتن ها هستش !


یه روش هم بهتون یاد بدم که نیاز به کدنویسی نداشته باشه ؛ 

در محیط اکلیپس :

 کل بلاک switch case ــی رو که نوشتی رو انتخاب کن بعد در محیط اکلیپس CTRL+1 رو بزن از کادری که باز میشه 

گزینه 'Convert 'switch' to 'if-else رو انتخاب کن  به همین راحتی switch case تبدیل به if-else میشه


در محیط اندروید استودیو :

 کل بلاک switch case ــی رو که نوشتی رو انتخاب کن بعد ALT+ENTER  رو بزن از کادری که باز میشه 

گزینه 'Convert 'switch' to 'if-else رو انتخاب کن  به همین راحتی switch case تبدیل به if-else میشه !

 

امیدوارم مشکلتون با این روش حل بشه !

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .