Ok, my problem is keeping the edit text input. I have a recycler view with some edit text inside. I have an adapter and an add button to add another new editing text. There is a problem because if I write something inside the same editing text, it does not always save when I change focus, or I click the "add" button.
Here is my hosting fragment:
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(view.getContext());
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new AddPlayerAdapter(players);
mRecyclerView.setAdapter(mAdapter);
addButton.setOnClickListener {
players.add(new Player(""));
mAdapter.notifyDataSetChanged();
}
So, now, after clicking the "add" button, the new Player class is added to the "Players" class (item players), and the adapter is notified, I see on my screen that a new element has been added (declared in AddPlayerViewHolder). It works great.
Here are snippets of my adapter class:
public AddPlayerAdapter(Players players) {
this.players = players;
}
@Override
public AddPlayerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.add_player, parent, false);
return new AddPlayerViewHolder(v);
}
@Override
public void onBindViewHolder(final AddPlayerViewHolder holder, final int position) {
holder.name.setText(players.get(position).getName());
holder.name.setHint("Player " + Integer.toString(position+1));
holder.name.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if (view != null) players.get(position).setName(holder.name.getText().toString());
}
});
}
, .
, "" ( "" ), . , , OnFocusChangeListener , .
- , ?