私はリストを埋めるために使用されるカスタムリストビューを持っているので、すべてのアイテムには独自のedittextがあります。それをクリックして値を入力した後、ソフトキーボード(キーボードの左下にある小さな矢印)を隠すと、edittextは入力されたテキストを失います。AndroidのカスタムListView - ソフトキーボードが隠れたときにEdittextがクリアされる
なぜ、どのように防止できますか?
ありがとうございます!
アダプタのコード:
public class CompetitorResultWeightListAdapter extends ArrayAdapter<Competitor> {
Helper helper = new Helper(getContext());
private DatabaseReference databaseResult;
private Activity context;
private List<Competitor> competitorList;
private WodResult wodResult;
public CompetitorResultWeightListAdapter(Activity context, List<Competitor> competitorList) {
super(context, R.layout.competitor_result_weight_list_layout, competitorList);
this.context = context;
this.competitorList = competitorList;
}
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
helper.logD("in CompetitorResultWeightListAdapter - getView");
databaseResult = FirebaseDatabase.getInstance().getReference("Competitions").child(helper.getsCompetitionID())
.child("Wods").child(helper.getsWodID()).child("Results");
LayoutInflater layoutInflater = context.getLayoutInflater();
convertView = layoutInflater.inflate(R.layout.competitor_result_weight_list_layout, null, true);
final ViewHolder viewHolder = new ViewHolder();
TextView tvCompetitorListName = (TextView) convertView.findViewById(R.id.tvCompetitorListName);
TextView tvCompetitorListNumber = (TextView) convertView.findViewById(R.id.tvCompetitorListNumber);
viewHolder.etWeight = (EditText) convertView.findViewById(R.id.etCompetitorResultWeight);
viewHolder.btnSaveResult = (ImageButton) convertView.findViewById(R.id.btnCompetitorResultRepeat);
convertView.setTag(viewHolder);
Competitor competitor = competitorList.get(position);
tvCompetitorListName.setText(competitor.getCompetitorName());
tvCompetitorListNumber.setText("Rajtszám: " + competitor.getCompetitorNumber());
//viewHolder.etWeight.setHint("működik");
//etCompetitorResultWeight.setInputType(InputType.TYPE_NULL);
//etCompetitorResultWeight.setTextIsSelectable(true);
viewHolder.btnSaveResult.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.etWeight.setHint(viewHolder.etWeight.getText() + " kg");
helper.logD("Edittext text at position " + position + ": " + viewHolder.etWeight.getText().toString().trim());
helper.setsCompetitorID(getItem(position).getCompetitorID());
addWodResult(getItem(position).getCompetitorID(),
getItem(position).getCompetitorName(),
viewHolder.etWeight.getText().toString().trim());
}
});
return convertView;
}
private void addWodResult(String id, String name, String result) {
helper.logD("in addWodResult");
helper.logD("id: " + id + ", name: " + name + ", result: " + result);
wodResult = new WodResult(id, name, result);
databaseResult.child(helper.getsCompetitorID()).setValue(wodResult).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
helper.makeToast(getContext().getResources().getString(R.string.wod_result_data_saved), helper.toastShort);
//viewHolder.btnRepeatResult.setBackgroundColor(Color.GREEN);
} else {
helper.makeToast(getContext().getResources().getString(R.string.firebase_data_stored_error), helper.toastShort);
}
}
});
}
public class ViewHolder {
EditText etWeight;
ImageButton btnSaveResult;
}
}
あなたが使用しています'ViewHolder'は、あなたが持っていないようです。 – samirk433
いいえ、私はしていません。私はそれを修正し、あなたにアップデート、ありがとう。 – lpasztor
ビューホルダーと同じです。私は質問を編集し、コードを追加します。これをチェックしてください。 – lpasztor