Привет, я пытаюсь сделать просмотр списка с текстом редактирования, где пользователь может ввести числа, которые он хочет, но мой код продолжает прыгать между блоками редактирования после того, как я добавляю первый символ, есть способ остановить это ? Я попытался удалить фокус и удалить addTextWatcher. Однако, когда я удаляю addtextwatcher, текст текста не записывается. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, так как я новичок в этой жизни Android. вот мой код для адаптера: public CreateWKOAdapter (контекст контекста, элементы ArrayList, ListView listview) { inflater = LayoutInflater.from (контекст); this.mContext = context; this.items = items; this.listview = listview; }Редактирование текстов не работает должным образом android
@Override
public int getCount()
{
return items.size();
}
@Override
public CreateWKOItem getItem(int position)
{
return items.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder = null;
if (convertView == null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.create_wko_layout_item, null);
holder.name_text_view = (TextView) convertView.findViewById(R.id.text_name);
holder.header = convertView.findViewById(R.id.relativeLayout1);
holder.input = convertView.findViewById(R.id.oclick_layout);
holder.image_view = (ImageView) convertView.findViewById(R.id.foto_createwko);
holder.sets_edit_text = (CustomEditText) convertView.findViewById(R.id.sets_edit_text);
holder.reps_edit_text = (CustomEditText) convertView.findViewById(R.id.rep_edit_text);
holder.checkbox = (ImageView) convertView.findViewById(R.id.image_chk);
holder.header.setTag(holder.input);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
if (visibleindex == position)
{
holder.input.setVisibility(View.VISIBLE);
if(holder.sets_edit_text != null)
{
final EditText clone = holder.sets_edit_text;
holder.sets_edit_text.postDelayed(new Runnable()
{
@Override
public void run()
{
clone.requestFocus();
Log.i("su", "Request focus");
}
}, 300);
}
}
else
{
holder.input.setVisibility(View.GONE);
}
CreateWKOItem item = getItem(position);
if(item.isShouldShowCheckBox())
{
holder.checkbox.setVisibility(View.VISIBLE);
}
else
{
holder.checkbox.setVisibility(View.GONE);
}
String image_drawable_str = item.getName().toLowerCase().replace(" ", "_");
Drawable drawable = getImageFromDrawableByString(image_drawable_str);
if (drawable != null)
{
holder.image_view.setImageDrawable(drawable);
}
else
{
holder.image_view.setImageResource(R.drawable.bg_count);
}
holder.sets_edit_text.removeTextWatcher();
holder.reps_edit_text.removeTextWatcher();
holder.name_text_view.setText(item.getName());
holder.sets_edit_text.setHint("" + item.getSets());
holder.reps_edit_text.setHint("" + item.getReps());
holder.header.setTag(holder.input);
holder.header.setTag(R.id.tag_id, position);
holder.header.setTag(R.id.view_id, holder.reps_edit_text);
holder.sets_edit_text.setTag(item);
holder.reps_edit_text.setTag(item);
holder.sets_edit_text.addTextWatcher();
holder.reps_edit_text.addTextWatcher();
holder.header.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
final EditText editText = (EditText) v.getTag(R.id.view_id);
final int a = (int) v.getTag(R.id.tag_id);
visibleindex = a;
View input = (View) v.getTag();
if (input.getVisibility() == View.VISIBLE)
{
input.setVisibility(View.GONE);
visibleindex = -1;
}
else
{
//input.setVisibility(View.VISIBLE);
}
notifyDataSetChanged();
}
});
holder.sets_edit_text.setiOnTextChanged(new CustomEditText.IOnTextChanged()
{
@Override
public void onTextChanged(View v, String newText)
{
CreateWKOItem it = (CreateWKOItem) v.getTag();
int value = 0;
try
{
String str = newText.toString();
Log.i("su", "Sets text change to: " + str);
if (str.length() > 0)
value = Integer.parseInt(str);
}
catch (Exception ex)
{
ex.printStackTrace();
}
if (it != null)
{
it.setSets(value);
Log.i("su", "Current item set sets to: " + value);
}
notifyDataSetChanged();
}
});
holder.reps_edit_text.setiOnTextChanged(new CustomEditText.IOnTextChanged()
{
@Override
public void onTextChanged(View v, String newText)
{
CreateWKOItem it = (CreateWKOItem) v.getTag();
int value = 0;
try
{
String str = newText.toString();
Log.i("su", "Reps text change to: " + str);
if (str.length() > 0)
value = Integer.parseInt(str);
}
catch (Exception ex)
{
ex.printStackTrace();
}
if (it != null)
{
it.setReps(value);
Log.i("su", "Current item set reps to: " + value);
}
notifyDataSetChanged();
}
});
return convertView;
}
Благодаря
Что вы имеете в виду, сохраняя свой прослушиватель текстовых полей? Спасибо – pudm
'addTextWatcher()'. Просто сделайте метод пустым между скобками. –