1

我有一个带有按钮的微调器,下面有一个带有 textview 和 edittext 的列表视图。

当我单击按钮时,我将微调器值传递给 listview 内的 textview,然后我想捕获 edittext 行的文本。

当我失去对edittext的关注时,文本为空,为此我设置了onFocuChanged监听器,但我无法从edittext获取文本。我试图设置一个 TextChangeListener,但这不起作用。还有其他想法吗?

这是列表视图的数组适配器:

    public class gremioAdapter extends ArrayAdapter<Gremio> {

        Context context;
        int layoutResourceId;
        ArrayList<Gremio> data = null;
        protected String comentarioAlEdiText;

        public gremioAdapter(Context context, int layoutResourceId,
                ArrayList<Gremio> data) {
            super(context, layoutResourceId, data);
            this.layoutResourceId = layoutResourceId;
            this.context = context;
            this.data = data;
        }

        public void updateDataSet(Gremio objetoGremioAnadir) {
            this.data.add(objetoGremioAnadir);
            notifyDataSetChanged();

        }

        public void updateDataSet(Gremio objetoGremioAnadir, int posicion) {
            this.data.add(posicion, objetoGremioAnadir);
            notifyDataSetChanged();

        }

        public void updateDataSet(String comentario, int posicion) {
            this.data.get(posicion).comentario = comentario;
            notifyDataSetChanged();

        }

        @Override
        public View getView(final int position, View convertView,
                ViewGroup parent) {
            View row = convertView;
            GremioHolder holder = null;

            if (row == null) {
                LayoutInflater inflater = (LayoutInflater) context
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                row = inflater.inflate(layoutResourceId, parent, false);

                holder = new GremioHolder();
                holder.tvGremio = (TextView) row.findViewById(R.id.tvGremio);
                holder.etComentario = (EditText) row
                        .findViewById(R.id.etComentario);
                holder.cbActivo = (CheckBox) row
                        .findViewById(R.id.cbGremioActivo);

                row.setTag(holder);
            } else {
                holder = (GremioHolder) row.getTag();
            }

            Gremio gremioFinal = data.get(position);
            holder.tvGremio.setText(gremioFinal.literal);
            holder.etComentario.setText(gremioFinal.comentario);


            holder.etComentario
                    .setOnFocusChangeListener(new OnFocusChangeListener() {

                        @Override
                        public void onFocusChange(View v, boolean hasFocus) {

                            seteaTextoAlComentario(position);

                        }
                    });

            return row;
        }

        protected void seteaTextoAlComentario(int position) {
            data.get(position).comentario = comentarioAlEdiText;
            adaptadorListaGremios.notifyDataSetChanged();
        }

        public class GremioHolder {
            TextView tvGremio;
            EditText etComentario;
            CheckBox cbActivo;
        }
    }

}

这是将微调器值添加到列表视图的代码

btnAnadirGremio.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                gremioQueQuiereAnadir = spinnerGremios.getSelectedItem()
                        .toString();
                codigoDelGremio = respuestaTerminar
                        .getListaGremiosDisponibles().get(gremioClickeado)
                        .getCodigo();
                Gremio objetoGremioAnadir = new Gremio();
                objetoGremioAnadir.setCodigo(codigoDelGremio);
                objetoGremioAnadir.setLiteral(gremioQueQuiereAnadir);
                objetoGremioAnadir.setCodigo(respuestaTerminar
                        .getListaGremiosDisponibles().get(gremioClickeado)
                        .getCodigo());
                objetoGremioAnadir.setComentario("");
                adaptadorListaGremios.updateDataSet(objetoGremioAnadir);

            }
        });
4

0 回答 0