ボタン付きのスピナーと、テキストビューと編集テキスト付きのリストビューの下にあります。
ボタンをクリックすると、スピナーの値がリストビュー内のテキストビューに渡され、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);
}
});