簡體   English   中英

具有Listview時保存我的RadioGroup的狀態

[英]Save the state of my RadioGroup when have a Listview

使用RadioGroup實施列表視圖時遇到一些問題。 當我選擇我的RadioGroup的某些CheckButton並滾動列表視圖后,我的ChechButton未被選中。 我正在嘗試修復它,但是我不知道該怎么做。 我知道我需要保存我的復選按鈕的狀態並在創建列表視圖時加載它。 但是我不知道該怎么做。

有人可以幫我做我的代碼嗎?

這里有XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="8dp"
android:id="@+id/teste"
android:background="@drawable/borderframe"
tools:context="com.example.gerdaumanagement.gerdaumanagement.layoutListaAMC">



    <TextView
        android:id="@+id/potencial"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:paddingRight="3dp"
        android:paddingTop="3dp"
        android:text="Potencial"
        android:textAllCaps="true"
        android:textSize="15sp" />

    <TextView
        android:id="@+id/potencialLetra"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="25dp"
        android:text="A"
        android:textAllCaps="true"
        android:textColor="@color/azulgerdau"
        android:textSize="40sp"
        android:layout_below="@+id/potencial"
        android:layout_alignParentStart="true"
        android:layout_toStartOf="@+id/questao" />

    <TextView
        android:id="@+id/questao"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@+id/potencial"
        android:text="As máquinas e equipamentos possuem selo de liberação por um líder Gerdau e está dentro do prazo de validade?"
        android:textAlignment="center"
        android:textSize="16sp" />

<TextView
    android:id="@+id/titulo"
    android:textAlignment="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Condiçao Fisica"
    android:textSize="15sp"
    android:gravity="center"
    android:layout_toStartOf="@+id/questao"
    android:layout_below="@+id/potencialLetra" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/questao"
        android:layout_alignParentEnd="true"
        android:gravity="center_horizontal"
        android:paddingTop="5dp"
        android:layout_alignStart="@+id/questao">

    <RadioGroup
        android:id="@+id/radioGroupAmc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

    <RadioButton
        android:id="@+id/sim"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sim"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

        <RadioButton
            android:id="@+id/nao"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/questao"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_toEndOf="@+id/sim"
            android:text="Não" />

        <RadioButton
        android:id="@+id/na"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NA"
        android:layout_below="@+id/questao"
        android:layout_toEndOf="@+id/nao"
        />
        </RadioGroup>
    </LinearLayout>



</RelativeLayout>

這是apater:

class AdapterAmcPersonalizada extends BaseAdapter {

    private final List<AvaliacaoMensal> mensal;
    private final Activity act;


    public AdapterAmcPersonalizada(List<AvaliacaoMensal> mensal, Activity act) {
        this.mensal = mensal;
        this.act = act;

    }

    @Override
    public int getCount() {
        return mensal.size();
    }

    @Override
    public Object getItem(int position) {
        return mensal.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = act.getLayoutInflater().inflate(R.layout.activity_layout_lista_amc, parent, false);
        AvaliacaoMensal mensalAmc = mensal.get(position);



        //pegando as referências das Views
        TextView potencial = (TextView) view.findViewById(R.id.potencialLetra);
        TextView questao = (TextView) view.findViewById(R.id.questao);
        TextView titulo = (TextView) view.findViewById(R.id.titulo);

        //populando as Views
        potencial.setText(String.valueOf(mensalAmc.getPotencial()));
        questao.setText(String.valueOf(mensalAmc.getQuestao()));
        titulo.setText(String.valueOf(mensalAmc.getTitulo()));


       RadioGroup radioGroupAmc = (RadioGroup) view.findViewById(R.id.radioGroupAmc);
       radioGroupAmc.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {


                switch(checkedId) {
                    case R.id.sim:

                            // trata radioValor1
                            break;
                    case R.id.nao:

                            // trata radioValor2
                            break;
                    case R.id.na:

                        // trata radioValor3
                        break;
                }

            }
        });



        return view;
    }



}

這是我的清單數據:

 public List<AvaliacaoMensal> todosMensal() {
        List<AvaliacaoMensal> dados = new ArrayList<AvaliacaoMensal>();
        dados.add(new AvaliacaoMensal("As máquinas e equipamentos possuem selo de liberação por um líder Gerdau e está dentro do prazo de validade?", 'A', "Condição Fisica", false, false,false));
        dados.add(new AvaliacaoMensal("Atividades se encontram sinalizadas ou isoladas?", 'B' , "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("Todos os colaboradores estão usando os EPI´s básicos, específicos e em boas condições? Os EPI's são adequados aos riscos das atividades? Quando aplicável são realizados pré-uso dos mesmos?", 'B', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("As plataformas, andaimes, enlonadores, estruturas de guarda corpo e corrimão se encontram em boas condições?", 'A', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("Máquinas e equipamentos que possuem partes rotativas estão adequadas conforme NR 12?", 'A', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("Existe local adequado para refeição e sanitários suficientes conforme NR 31?", 'A', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("A contratada faz o uso de bloqueio de energia quando aplicavel?", 'A', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("Todas as maquinas devem possuir proteção contra tombamento e cinto de segurança", 'A', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("A frente de trabalho possui caixa de primeiros socorros?", 'C', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("Está sendo cumprida a proibição de utilizar adornos como: brincos, pulseiras, relógios, cordões, anéis, etc?", 'C', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("As proteções contra quedas, seja para acesso ou execução das tarefas, estão instaladas e usadas  de acordo c/ os procedimentos de segurança e conforme projeto elaborado por profissional habilitado ?", 'A', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("Os veículos operacionais e transporte de pessoas passaram pela vistoria mensal?", 'A', "Condição Fisica",false, false,false));
        dados.add(new AvaliacaoMensal("Todas atividades realizadas possuem padrão, IO ou APR?", 'A', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("A APR é de conhecimento, está assinada por todos os executantes da tarefa e disponível na frente de serviço?  Toda liderança da contratada foi treinada nos padrões de APR e PT?", 'A', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("As IPU's estão sendo preenchidas corretamente para máquinas, equipamentos, veículos e ferramentas manuais?", 'A', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("Colaboradores que executam atividades críticas estão portando crachá de autorização para Riscos Críticos?", 'A', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("Operadores e motoristas estão portanto CNH?", 'C', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("A empresa tem uma média de 2 relatos por colaborador?", 'C', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("A empresa está emitindo RTR?", 'C', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("Os relatos estão sendo tratados em DDS?", 'C', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("A empresa está dando fedback dos relatos e RTR para colaboradores?", 'C', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("Está sendo realizado aferição de pressão arterial para colaboradores que realizam atividades críticas?", 'C', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("Possui alguma ação em atraso de acidente?", 'A', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("Regras Gerais e específicas estão sendo cumpridas?", 'B', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("Possui novos colaborares na area? Se sim, possuem padrinhos treinando em ordem de serviço, IO, padrão e etc?", 'A', "Sistema",false, false,false));
        dados.add(new AvaliacaoMensal("A contratada deve possuir a coleta seletiva implantada e recipientes identificados à disposição dos colaboradores", 'B', "Meio Ambiente",false, false,false));
        dados.add(new AvaliacaoMensal("A coleta seletiva deve ser utilizada corretamente, com a destinação correta nos recipientes", 'C', "Meio Ambiente",false, false,false));
        dados.add(new AvaliacaoMensal("As embalagens de produtos quimicos / agrotóxicos devem ser devidamente armazenadas e devolvidas ao fabricante", 'A', "Meio Ambiente",false, false,false));
        dados.add(new AvaliacaoMensal("A contratada destina corretamente o óleo lubrificante usado e toma medidas adicionais durante o abastecimento de maquinas / motosserra", 'B', "Meio Ambiente",false, false,false));
        dados.add(new AvaliacaoMensal("As instalações devem ser localizadas com geografia favorável para obtenção de água, fora das APP (áreas de preservação permanente), com distância mínima a 100 metros dos rios e das nascentes d’água.", 'A', "Meio Ambiente",false, false,false));
        dados.add(new AvaliacaoMensal("Os produtos Químicos e Combustiveis estão armazenados de forma correta?", 'B', "Produto Quimíco e  Combustiveis",false, false,false));
        dados.add(new AvaliacaoMensal("Deve ter FISQP de todos os produtos armazenados, com atendimento as remendações e regras de armazenamento.", 'B', "Produto Quimíco e  Combustiveis",false, false,false));
        dados.add(new AvaliacaoMensal("Os locais de armazenamento possuem placas de acesso restrito e cadeado?", 'B', "Produto Quimíco e  Combustiveis",false, false,false));
        dados.add(new AvaliacaoMensal("As embalagens vazias de combustíveis ou lubrificantes devem permanecer neste local até ser retiradas da fazenda.", 'B', "Produto Quimíco e  Combustiveis",false, false,false));
        dados.add(new AvaliacaoMensal("Os produtos quimicos e inflamaveis são acima de 37°? Se não, existe autorização da area de SSMA da unidade?", 'A', "Produto Quimíco e  Combustiveis",false, false,false));
        dados.add(new AvaliacaoMensal("O deposito de produtos químicos posuem sinalização e proteção contra incêndios?", 'A', "Produto Quimíco e  Combustiveis",false, false,false));
        dados.add(new AvaliacaoMensal("Os serviços com produtos químicos e inflamáveis, possui a APR e Permissão de Trabalho? ", 'A', "Produto Quimíco e  Combustiveis",false, false,false));

        // Continuação do código
        return dados;
    }

這是我的課程AvaliacaoMensal:

class AvaliacaoMensal {
    private String questao;
    private char potencial;
    private String titulo;
     private boolean sim, nao, na;

getView方法內部,在這種情況下,您應該設置RadioGroup ,radioGroupAmc的狀態。 onCheckedChanged您應該記住以后在getView還原它的選擇。 在您的情況下,可以方便地將此信息存儲在List<AvaliacaoMensal> mensal

您應該將單選組值存儲到AvaliacaoMensal對象中。 否則,每當用戶滾動由未選中的另一個視圖的值填充的視圖單選按鈕時。

public class AvaliacaoMensal{
     boolean[] radioButtonValues = new boolean[3];
    ....
}

UNTESTED!

 class AdapterAmcPersonalizada extends BaseAdapter {
        private AvailacaoMensal flag;
        private final List<AvaliacaoMensal> mensal;
        private final Activity act;


        public AdapterAmcPersonalizada(List<AvaliacaoMensal> mensal, Activity act) {
            this.mensal = mensal;
            this.act = act;

        }

        @Override
        public int getCount() {
            return mensal.size();
        }

        @Override
        public Object getItem(int position) {
            return mensal.get(position);
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = act.getLayoutInflater().inflate(R.layout.activity_layout_lista_amc, parent, false);
            AvaliacaoMensal mensalAmc = mensal.get(position);



            //pegando as referências das Views
            TextView potencial = (TextView) view.findViewById(R.id.potencialLetra);
            TextView questao = (TextView) view.findViewById(R.id.questao);
            TextView titulo = (TextView) view.findViewById(R.id.titulo);

            //populando as Views
            potencial.setText(String.valueOf(mensalAmc.getPotencial()));
            questao.setText(String.valueOf(mensalAmc.getQuestao()));
            titulo.setText(String.valueOf(mensalAmc.getTitulo()));


           RadioGroup radioGroupAmc = (RadioGroup) view.findViewById(R.id.radioGroupAmc);

           flag = mensalAmc;
           radioGroupAmc.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {


                    switch(checkedId) {

                        case R.id.sim:
                                flag.radioButtonValues[0] = group.isChecked();
                                // trata radioValor1
                                break;
                        case R.id.nao:

                                // trata radioValor2
                                break;
                        case R.id.na:

                            // trata radioValor3
                            break;
                    }

                }
            });



            return view;
        }



    }

在適配器內部創建一個標志,以選擇哪個是當前對象。 因為如果您訪問onCheckedListener內部的onCheckedListener ,則位置必須是最終的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM