Передача отредактированного значения из представления переработчика в действие - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть вид переработчика с editext.Первоначально эти текстовые представления будут содержать несколько строк, переданных из действия в адаптер.Пользователь может редактировать значения некоторых / всех этих текстов редактирования.Теперь, как мне вернуть эти данные в мою деятельность?

Мой код:


//Adapter class

public class AlarmAdapter {

    Context context;
    private ArrayList<String> dates;
    private ItemClickListener mListener;

    public AlarmAdapter(Context context, ArrayList<String> dates) {
        this.context = context;
        this.dates = dates;
    }

    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        //normal code
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {

            String date = dates.get(position);
            holder.mTxtTimeLayout.setText(date);
            holder.mTxtTimeLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            //display timepicker, set the value of textview to user selected time
            holder.mTxtTimeLayout.setText(df.format(c.getTime()));

           }

    }
    @Override
    public int getItemCount() {
        return dates.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        TextView mTxtTimeLayout;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            mTxtTimeLayout = itemView.findViewById(R.id.txtTimeLayout);
        }

    }


}

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Я предпочитаю использовать статические переменные в такой ситуации.

Сначала создайте класс и объявите статическую переменную.

public class Utils {public static ArrayList<String> dates = new ArrayList<>(); }

После этого в конструкторе вашего адаптера

public AlarmAdapter(Context context, ArrayList<String> dates) {
    this.context = context;
    Utils.dates = dates;
}

Теперь вы можете использовать это значение во всем приложении.

В зависимости от ваших требований, вы можете вызвать

Utils.dates.clear();

в методе onDestroy () вашей деятельности..

0 голосов
/ 19 сентября 2019

Во-первых, создайте интерфейс (класс Java), как это ..

public interface EditTextChage {
    void editText1Changes(String newText);
    void editText2Changes(String newText2);
    --------so on the others ------
}

Во-вторых, реализуйте интерфейс, созданный в действии, как это

public class MainActivity extends Activity implements EditTextChanges{

   --- all other functions ---
@Override
    public void editText1Changes(String newText1) {
        //do whatever you like with text from edit text 1
    }
@Override
    public void editText2Changes(String newText2) {
        //do whatever you like with text from edit text 2
    }

}

В-третьих, в конструктор адаптераайзераайзера добавьте новый параметр editTextChange. Тогда конструктор адаптера вашего ресивера должен выглядеть так:другой параметр и в позиции editTextChange просто передайте «this»

Наконец, используйте следующий метод в методе bindHolder в программе recyclerview

customView.yourEditText1.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(EditText target,Editable s) {

                editTextChange.editText1Changes(target.getText.toString();
            }


        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...