Получить Spinner Пользовательскую позицию для использования в другом Spinner из другой Acctivity - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть активность в регистре "Счета", в которой есть 1 счетчик.При этом Spinner содержит регистрацию карты с IDCard, заголовок и описание (сохраняются в таблице «Карта» в базе данных).Когда я сохраняю эту запись «Счета-фактуры» в таблице «Счета-фактуры», этот счетчик сохраняет только IDCard.

У меня есть другое действие, которое редактирует этот регистр счетов-фактур, он имеет тот же счетчик, но я хочу этот счетчиквосстановить позицию элемента, который нужно отредактировать, но я не могу этого сделать, есть ли у кого-нибудь решение?

Примечание. Можно ли получить позицию элемента с карты IdCard?Извините за мой плохой английский.

Заранее спасибо.

RecordSpinnerCardAdapter.class:

public class RecordSpinnerCartaoAdapter extends BaseAdapter {

    private Context context;
    private int layout;
    private ArrayList<HMAuxCartao> hmAux;

    public RecordSpinnerCartaoAdapter(Context context, int layout, ArrayList<HMAuxCartao> hmAux) {
        this.hmAux = hmAux;
        this.context = context;
        this.layout = layout;
    }

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

    @Override
    public Object getItem(int i) {
        return hmAux.get(i);
    }

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

    private class ViewHolder{

        TextView celula_cartao, celula_number;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        View row = view;
        ViewHolder holder = new ViewHolder();

        if (row==null){
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(layout, viewGroup,false);
            holder.celula_cartao = row.findViewById(R.id.celula_cartao);
            holder.celula_number = row.findViewById(R.id.celula_number);

            row.setTag(holder);
        }
        else {
            holder = (ViewHolder)row.getTag();
        }
//monta a listview
        HMAuxCartao model = hmAux.get(i);

      holder.celula_cartao.setText(model.get(CartaoDao.DESCARTAO));
        holder.celula_number.setText(model.get(CartaoDao.NUMBERCARD));

                return row;
    }

}

HmAuxCard.class

public class HMAuxCartao extends HashMap<String, String> {
    @Override
    public String toString() {
        return get(CartaoDao.DESCARTAO);
    }
}

InvoicesEditActivity.java:

    public class NotasEditActivity extends AppCompatActivity {

        private Context context;
        private NotasDao notasDao;
        private CartaoDao cartaoDao;
        private RecordSpinnerCartaoAdapter adapter;
        //
        private Spinner sp_card;
        //
        private int idCartao;
        //
        private long idAtual;

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.note_view_screen);

            iniciarVariaveis();
            iniciarAcoes();
        }

        private void iniciarVariaveis() {
            context = getBaseContext();
            notasDao = new NotasDao(context);
            cartaoDao = new CartaoDao(context);
            recuperarParametros();

            sp_card = findViewById(R.id.sp_card);

            adapter = new RecordSpinnerCartaoAdapter(context, R.layout.celula_spinner_card_layout, cartaoDao.obterListaCartao());
            sp_card.setAdapter(adapter);

        }

        private void iniciarAcoes() {
            if (idAtual != -1) {

                Notas cAux = notasDao.obterNotasById(idAtual);

                idCartao = (int) cAux.getIdcartao();

              sp_card.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
               @Override
               public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//That part is not working.
                   sp_card.setSelection(getSpinnerIndex(sp_card, String.valueOf(idCartao)));
               }
               @Override
               public void onNothingSelected(AdapterView<?> parent) {
                   sp_card.setSelection(getSpinnerIndex(sp_card, String.valueOf(idCartao)));
               }
           });
            }
        }

        private void recuperarParametros() {
            idAtual = getIntent().getLongExtra(Constantes.ID_BANCO, 0);


        }
//This part of the code is not working, I tried to do so to get the position from the IDCard;
        public static int getSpinnerIndex(Spinner spinner, String myString){
            int index = 0;
            for (int i=0;i<spinner.getCount();i++){
                if (spinner.getItemAtPosition(i).toString().equals(myString)){
                    index = i;
                }
            }
            return index;
        }

InvoicesDao.class

public class NotasDao extends Dao {

    private static final String TABELANOTAS = "notas";
    public static final String IDNOTAS = "idnotas";
    public static final String IDCARTAO = "idcartao";    

    public NotasDao(Context context) {
        super(context);
    }

    public Notas obterNotasById(long idnotas) {
        Notas cAux = null;
        //
        abrirBanco();
        //
        Cursor cursor = null;
        //
        try {

            String comando = " select * from " + TABELANOTAS + " where " + IDNOTAS + " = ? ";
            String[] argumentos = {String.valueOf(idnotas)};
            //
            cursor = db.rawQuery(comando, argumentos);
            //
            while (cursor.moveToNext()) {
                cAux = new Notas();
                cAux.setIdnotas(cursor.getLong(cursor.getColumnIndex(IDNOTAS)));
                cAux.setIdcartao(cursor.getLong(cursor.getColumnIndex(IDCARTAO)));
            }
            //
            cursor.close();

        } catch (Exception e) {
            Log.e(TAG, "obterNotasById: ");
        }
        //
        fecharBanco();
        //
        return cAux;
    }
}

CardDao.class

public class CartaoDao extends Dao {

    private static final String TABELA = "cartao";
    public static final String IDCARTAO = "idcartao";
    public static final String DESCARTAO = "descartao";
    public static final String NUMBERCARD = "numbercard";

    public CartaoDao(Context context) {
        super(context);
    }

    public ArrayList<HMAuxCartao> obterListaCartao() {
        ArrayList<HMAuxCartao> cartao = new ArrayList<>();
        //
        abrirBanco();
        //
        Cursor cursor = null;
        //
        try {
            String comando = " select " + IDCARTAO + ", " + DESCARTAO + ", " + NUMBERCARD  + " from " + TABELA + " order by " + DESCARTAO + " ";
            //
            cursor = db.rawQuery(comando, null);
            //
            while (cursor.moveToNext()) {
                HMAuxCartao hmAux = new HMAuxCartao();

                hmAux.put(IDCARTAO, cursor.getString(cursor.getColumnIndex(IDCARTAO)));
                hmAux.put(DESCARTAO, cursor.getString(cursor.getColumnIndex(DESCARTAO)));
                hmAux.put(NUMBERCARD, cursor.getString(cursor.getColumnIndex(NUMBERCARD)));
                //
                cartao.add(hmAux);
            }
            //
            cursor.close();

        } catch (Exception e) {
            Log.e(TAG, "obterListaCartao: ");
        }
        //
        fecharBanco();
        //
        return cartao;
    }
}

Для завершения кода есть Модели, если мне нужно разместить их здесь.Я просто поставил необходимый код.

1 Ответ

0 голосов
/ 20 декабря 2018

В InvoicesEditActivity.java я изменил метод getSpinnerIndex на:

public int getSpinnerIndex(Spinner spinner, String myString) {
    int index = 0;

    for (int i = 0; i < spinner.getCount(); i++) {
        HMAuxCartao model = hmAux.get(i);
        String modelS = model.get(CartaoDao.IDCARTAO);
        if (modelS != null) {
            if (modelS.equals(myString)) {
                index = i;
            }
        }
    }
    return index;
}

В той же операции, где есть действие Spinner, я удалил все и просто добавил:

    hmAux = cartaoDao.obterListaCartao();
    sp_card.setSelection(getSpinnerIndex(sp_card, String.valueOf(idCartao)));

Будучи этим hmAux типа ArrayList <HMAuxCartao>.

Спасибо за помощь.

...