[Android] Recuperando a referencia(ou id) CheckBox e usando o SharedPreferences

3 respostas Resolvido
Antonio_Flavio_Sousa

Olá gente, novamente eu aqui.

Voltando a dizer, “Estou fazendo um app lista de presença” e irei criar varias CheckBox, bom queria saber como recuperar a referencia dela e em segundo lugar como salvar os CheckBox(Para abrir o app com os nomes salvos) com SharedPreferences.

Obs. Eu não sei o nome dos checkBox

private Button add;
    private Button resultado;
    private LinearLayout container;
    private Button ok;


    private static final String ARQUIVO_PREFERENCIA = "ArquivoPreferencia";


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

        container = (LinearLayout) findViewById(R.id.lineCheckbox);
        add = (Button) findViewById(R.id.btnAdd);
        resultado = (Button) findViewById(R.id.btnResultado);
        ok = (Button) findViewById(R.id.btnOk);

        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                exibirMensagemEdt("Novo Aluno(New Student)", "Adicionar novo aluno, click ok", container);
            }
        });



    }


    public void exibirMensagemEdt(String titulo, String texto, final LinearLayout frameLayout){

        AlertDialog.Builder mensagem = new AlertDialog.Builder(MainActivity.this);
        mensagem.setTitle(titulo);
        mensagem.setMessage(texto);
        // DECLARACAO DO EDITTEXT
        final EditText input = new EditText(this);
        mensagem.setView(input);
        mensagem.setNeutralButton("OK", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {

                if (input.getText().toString().isEmpty()) {
                    Toast.makeText(getApplicationContext(), "Texto em Branco",
                            Toast.LENGTH_SHORT).show();
                } else {
                    criarNovoAluno(frameLayout, input.getText().toString());
                    Toast.makeText(getApplicationContext(), input.getText().toString().trim(),
                            Toast.LENGTH_SHORT).show();
                }
            }

        });

        mensagem.show();
        // FORÇA O TECLADO APARECER AO ABRIR O ALERT
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);




    }

    public void criarNovoAluno(LinearLayout frameLayout, String texto){

        //Criando um botão passando o contexto
        CheckBox aluno = new CheckBox(this);
        aluno.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        aluno.setText(texto);
        aluno.setTextSize(30);
        //Espaçamento
        aluno.setPadding(5, 5, 5, 5);

        //Log.i("COD ID", aluno.getId( ));

        //Adicionando o botão na tela
        frameLayout.addView(aluno);

    }

}

Queria abrir o app com esses CheckBox salvos

Desde já agradeço.

3 Respostas

Antonio_Flavio_Sousa

Estava tentando usar o LOG com getID, mas não deu certo

"Log.i(“ID:”, aluno.getID);

Andrauss
Solucao aceita

Antes de salvar nas preferências sugiro você criar uma Classe Aluno
com :
id (posição)
nome
marcado (boolean)

Em seguida crie uma lista de List para armazenar os alunos a cada chamada do método criarNovoAluno.
A posição do aluno na lista será a posição da CheckBox no layout.

Sobre o id do check box use o método setId(), que você pode recuperar com findViewById() no seu layout.

Se você realmente vai usar as preferências para salvar os dados, recomendo que salve os Alunos como JSON.

Boa sorte. :sunglasses:

Antonio_Flavio_Sousa

Entendi, mas eu não consigo colocar isso no meu código, se tiver algum exemplo.

mas obrigado novamente. Xd

Criado 24 de dezembro de 2016
Ultima resposta 24 de dez. de 2016
Respostas 3
Participantes 2