Android Lost focus im TextInputLayout

Ich verwende im Recyclerview und darin Cardviews.
Innerhalb der Card habe ich eine Datenklasse gespeichert.
Innerhalb der Card gibt es eine Texteingabe.

Wenn das TextInputLayout, also das Textfeld darin verlassen wird möchte ich die Daten in der Klasse speichern/aktualisieren.
Aber ich finde keine Möglichkeit, da es nicht durch das anklicken einer Schaltfläche passieren soll, sondern beim verlassen des Eingabefeldes.

Dabei habe ich nach einem LostFocus Listener gesucht, aber keinen gefunden.

Wie stellt man das sonst an ?
 
Java:
abc.setOnFocusChangeListener(new OnFocusChangeListener() {          
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
               // focus lost....
            }
        }
    });
 
Danke, das habe ich gesucht,
aber man muss dem EditText im Layouter eine eigne ID geben und sich dann darauf beziehen..

Das TextInputLayout reagiert nicht auf changefocus.
 
Aber jetzt bin ich soweit, und möchte aus meiner ArrayList das gerade ausgewählte Item (also das Objekt ermitteln) um dann über die setMethode den Wert zu speicher.

Leider finde ich keine Möglichkeit das SelectedItem zu ermitteln um dann die Klasse anzusprechen und dort zu speichern.
Die Position wäre auch ausreichend, denn dann kann ich die Klasse ansprechen.

Hast du vielleicht einen Anstoß wie ich das anstellen muss.

Code:
package com.job.vt;

import android.provider.ContactsContract;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.material.textfield.TextInputLayout;

import java.util.ArrayList;

public class A1000_VokTestRCAdapter extends RecyclerView.Adapter<A1000_VokTestRCAdapter.rc_a1000_rcviewholder> {

    private ArrayList<A1000_VokTestDataClass> voktestdata;

    public  class rc_a1000_rcviewholder extends RecyclerView.ViewHolder{

        public TextView baselanguage;
        public TextView word;
        public TextInputLayout usersinput;
        public EditText usersimput_edittext;
        public ImageButton showword;
        public ImageButton playsound;


        public rc_a1000_rcviewholder(@NonNull View itemView) {

            super ( itemView );

            word = itemView.findViewById ( R.id.a1000_word );
            baselanguage = itemView.findViewById ( R.id.a1000_baselanguage );
            usersinput = itemView.findViewById ( R.id.a1000_usersinput );
            usersimput_edittext = itemView.findViewById ( R.id.a1000_usersinput_edittxt );


            showword = itemView.findViewById ( R.id.a1000_showword );
            playsound = itemView.findViewById ( R.id.a1000_playsound );

            usersimput_edittext.setOnFocusChangeListener(new View.OnFocusChangeListener () {
                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    if (!hasFocus) {

//                        A1000_VokTestDataClass currentdata =

                        Log.d ( "voktest" , "jetzt würde ich speichern : " + usersimput_edittext.getText ( ) + "index : " + pos );


                    }
                }
            });

            showword.setOnClickListener ( new View.OnClickListener ( ) {
                @Override
                public void onClick(View view) {
                    Log.d ("voktest", "Show was clicked !");
                }
            } );


            playsound.setOnClickListener ( new View.OnClickListener ( ) {
                @Override
                public void onClick(View view) {
                    Log.d ("voktest", "Sound was clicked !");
                }
            } );
        }
    }
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben