Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

Dúvida na hora de levar informações pra outra activity

Eu tenho uma tela onde faço o cadastro de perguntas, mas após esse cadastro, eu gostaria de fazer com que outra activity recebesse essas perguntas e me desse a opção para a resposta.

Eu fiz apenas um modelo no xml, onde só contém uma pergunta, no caso eu queria fazer isso gerar várias perguntas e carregar as perguntas de acordo com o formulario onde ela foi cadastrada.

Por exemplo:

Tenho um formulário chamado ALTURA, faço cadastro de perguntas nesse formulario ALTURA, depois quero chamar uma outra activity onde carregará todas essas perguntas cadastradas e colocar a opção de respondê-las.

Esse seria o xml modelo. Agora quero colocar as perguntas cadastradas para aparecer e salvar junto com as respostas.

            <TextView
                android:id="@+id/nomeInsp"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:background="#2da94a"
                android:text="Nome da Inspeção"
                android:gravity="center"
                android:textColor="#fff"
                android:textSize="22sp"
                android:textStyle="bold"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.00" />

            <TextView
                android:id="@+id/pergunta"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="8dp"
                android:text="Inserir pergunta"
                android:textColor="@android:color/black"
                android:textSize="18sp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/nomeInsp"
                app:layout_constraintVertical_bias="0.04000002" />


            <RadioGroup
                android:id="@+id/radioGroup"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="8dp"
                android:orientation="horizontal"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.28"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/pergunta"
                app:layout_constraintVertical_bias="0.00999999">

                <RadioButton
                    android:id="@+id/conforme"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="Conforme" />

                <RadioButton
                    android:id="@+id/nConforme"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="Não conforme" />

                <RadioButton
                    android:id="@+id/nSeAplica"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="N/A" />
            </RadioGroup>
11 respostas

Oi Rafaela, tudo bem ?

Acho que pode ter uma lista de perguntas, quando o usuário clicar na lista você vai para a outra activity passando a pergunta, ai é só popular o textview com o conteúdo da pergunta e ai o usuário responde conforme o desejado.

Basta passar na própria intent.

Mas eu faria uma tela listando as perguntas e depois iria passando pra outra tela quando a pessoa clicar? Não teria uma forma menos trabalhosa pro usuario, no caso. Dele só clicar no formulario desejado e eu já conseguir trazer uma tela com todas perguntas cadastradas com a opção de resposta?

Tem diversas maneiras.

Outra coisa que pode fazer é iterar as provas, para cada resposta, voce passa para a próxima, com um contador mesmo

E como eu poderia fazer isso?

FormularioActivity {

private List<Duvida> duvidas; // busca isso do banco ou do ws


private int indiceDuvidaAtual = 0;


public void responde(){

    indiceDuvidaAtual ++;

    atualizaFormularioComDuvidaAtual();

}



public void atualizaFormularioComDuvidaAtual(){

    Duvida atual = duvidas.get(indiceDuvidaAtual);

    // coloca essa duvida na tela

}


}

Algo similar a isso

Entendi, porém não entendi como vou usar esse metodo depois... Eu tenho o botão, quando eu clicar no botão, ele teria que atualizar a tela com outra pergunta...

package br.com.hlnengenharia.app;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.List;

import br.com.hlnengenharia.app.model.Inspecao;
import br.com.hlnengenharia.app.model.Pergunta;

public class InspecaoActivity extends AppCompatActivity {

    private TextView nomeInsp, campoPergunta;
    private List<Pergunta> perguntas;
    private int indicePerguntaAtual = 0;
    private Button proximaPergunta;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_inspecao);

        setTitle("");

        carregaNomeInspecao();
        responde();

        proximaPergunta = findViewById(R.id.proximaPergunta);
        proximaPergunta.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });
    }

    public void responde(){
        indicePerguntaAtual++;
        atualizaformulario();
    }

    private void atualizaformulario() {
        Pergunta atual = perguntas.get(indicePerguntaAtual);
    }

    private void carregaNomeInspecao() {
        Intent intent = getIntent();
        Inspecao inspecao = (Inspecao) intent.getSerializableExtra("nome");
        nomeInsp = findViewById(R.id.nomeInsp);
        nomeInsp.setText(inspecao.getNome());
    }


}

então?

Você precisa ter as dúvidas, que não faço ideia de onde vão vir, rs.

Mas quando as tiver consegue popular o campos da tela e ao clicar no botão próxima pergunta basta passar para o próximo indice

Mas a minha dúvida é: pra eu puxar essas perguntas eu devo fazer um Adapter? Ou o que? Porque quando eu tenho uma listview eu crio um arrayadapter pra conseguir carregar essa "lista" e agora não é um listview, eu vou popular um textview numa mesma activity varias vezes... então como eu vou popular minha "lista" no caso?

as perguntas vem daqui

public class CadPerguntaActivity extends AppCompatActivity {

    Button salvar;
    EditText pergunta;
    TextView codigo, setor, nome;
    private PerguntaHelper helper;
    private Inspecao inspecao;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cad_pergunta);

        helper = new PerguntaHelper(CadPerguntaActivity.this);

        Intent intent = getIntent();
        inspecao = (Inspecao) intent.getSerializableExtra("inspecao");
        codigo = findViewById(R.id.codigo_insp);
        setor = findViewById(R.id.setor_insp);
        nome = findViewById(R.id.nome_insp);
        codigo.setText(inspecao.getId().toString());
        setor.setText(inspecao.getIdSetor().toString());
        nome.setText(inspecao.getNome());


        salvar = findViewById(R.id.salvar_pergunta);
        salvar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PerguntaDAO dao = new PerguntaDAO(CadPerguntaActivity.this);

                Pergunta pergunta = helper.pegaPergunta();

                dao.insereAltura(pergunta);



                Toast.makeText(CadPerguntaActivity.this, "Salvo com sucesso", Toast.LENGTH_SHORT).show();
                finish();
            }
        });

    }
}

Voce vai precisar da lista de perguntas na outra activity, pega do dao.

Você tem o campo de pergunta né ? Basta você pegar a sua pergunta, que virá da lista e setar esse campo.

Meu model da classe de Perguntas esta assim... então vou no PerguntaDAO e crio um "buscaPerguntas"? É isto?

public class Pergunta implements Serializable {
    private Long id;
    private Long idInspecao;
    private String pergunta;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getIdInspecao() {
        return idInspecao;
    }

    public void setIdInspecao(Long idInspecao) {
        this.idInspecao = idInspecao;
    }

    public String getPergunta() {
        return pergunta;
    }

    public void setPergunta(String pergunta) {
        this.pergunta = pergunta;
    }
}
  public List<Pergunta> buscaPerguntaAltura(Long idInsp){
        List<Pergunta> perguntas = new ArrayList<>();

        Cursor c = dao.getReadableDatabase().rawQuery("SELECT * FROM Altura JOIN Inspecoes ON idInspecao=inspencao_id WHERE idInspecao=?", new String[]{idInsp.toString()});

        while (c.moveToNext())
            perguntas.add(criaPergunta(c));
        c.close();
        return perguntas;
    }
solução!

Sim sim, exatamente :D