Inhalt

Aktueller Ordner: duesseldorfer-schuelerinventar-android-studio
⬅ Übergeordnet

QuestionnaireActivity.java

package com.example.personalitytest;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager2.widget.ViewPager2;

import com.example.personalitytest.adapters.QuestionPagerAdapter;
import com.example.personalitytest.models.Profile;

public class QuestionnaireActivity extends AppCompatActivity {
    private ViewPager2 viewPager;
    private QuestionPagerAdapter adapter;
    private Button btnPrevious, btnNext;
    private TextView tvQuestionCounter;
    private ProgressBar progressBar;
    
    private static final String[] QUESTIONS = {
        	"Zuverlaessigkeit",
        	"Arbeitstempo",
                "Arbeitsplanung",
                "Organisationsfähigkeit",
                "Geschicklichkeit",
                "Ordnung",
                "Sorgfalt",
                "Kreativitaet",
                "Problemlosefaehigkeit",
                "Abstarktionsvermoegen",
                "Selbststaendigkeit",
                "Belastbarkeit",
                "Konzentrationsfaehigkeit",
                "Verantwortungsbewusstsein",
                "Eigeninitiative",
                "Leistungsbereitschaft",
                "Auffassungsgabe",
                "Merkfaehigkeit",
                "Motivationsfaehigkeit",
                "Reflektionsfaehigkeit",
                "Teamfaehigkeit",
                "Hilfsbereitschaft",
                "Kontaktfaehigkeit",
                "RespektvollerUmgang",
                "Kommunikationsfaehigkeit",
                "Einfuehlungsvermoegen",
                "Konfliktfaehigkeit",
                "Kritikfaehigkeit",
                "Schreiben",
                "Lesen",
                "Mathematik",
                "Naturwissenschaften",
                "Fremdsprachen",
                "Praesentationsfaehigkeit",
                "PC-Kenntnisse",
        	"FaecheruebergreifendesDenken"
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_questionnaire);
        
        viewPager = findViewById(R.id.viewPager);
        btnPrevious = findViewById(R.id.btnPrevious);
        btnNext = findViewById(R.id.btnNext);
        tvQuestionCounter = findViewById(R.id.tvQuestionCounter);
        progressBar = findViewById(R.id.progressBar);
        
        adapter = new QuestionPagerAdapter(this, QUESTIONS);
        viewPager.setAdapter(adapter);
        
        setupListeners();
        updateUI();
    }

    private void setupListeners() {
        btnPrevious.setOnClickListener(v -> {
            if (viewPager.getCurrentItem() > 0) {
                viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
            }
        });
        
        btnNext.setOnClickListener(v -> {
            if (viewPager.getCurrentItem() < QUESTIONS.length - 1) {
                viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
            } else {
                finishQuestionnaire();
            }
        });
        
        viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                updateUI();
            }
        });
    }

    private void updateUI() {
        int current = viewPager.getCurrentItem() + 1;
        int total = QUESTIONS.length;
        
        tvQuestionCounter.setText(String.format("%d/%d", current, total));
        progressBar.setProgress((int) (((float) current / total) * 100));
        
        btnPrevious.setVisibility(current > 1 ? View.VISIBLE : View.INVISIBLE);
        btnNext.setText(current == total ? "Fertigstellen" : "Weiter");
    }

    public void saveAnswer(int questionIndex, int answer) {
        Profile profile = ((PersonalityTestApp) getApplication()).getCurrentProfile();
        if (profile != null) {
            profile.getAnswers()[questionIndex] = answer;
        }
    }

    private void finishQuestionnaire() {
        Profile profile = ((PersonalityTestApp) getApplication()).getCurrentProfile();
        if (profile != null) {
            profile.calculateScores(((PersonalityTestApp) getApplication()).getNormTable());

		new AsyncTask<Void, Void, Boolean>() {
    			protected Boolean doInBackground(Void... params) {
        			return saveProfileToServer(profile);
    			}
    			protected void onPostExecute(Boolean success) {
        			if (success) {
            			startActivity(new Intent(QuestionnaireActivity.this, ProfileActivity.class)
                		.putExtra("profile_id", profile.getId()));
            			finish();
        			}
    			}
		}.execute();
            
            Intent intent = new Intent(this, ProfileActivity.class);
            intent.putExtra("profile_id", profile.getId());
            startActivity(intent);
            finish();
        }
    }
}