Android listview not receiving focus
My item in my list is not focused, my onFocusChanged is not working, so I created a journal statement to register focus, and I always return "false" for the v.isFocused () result.
The onClick method works fine.
Any ideas?
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
final ExerciseListHolder holder;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ExerciseListHolder();
holder.textView = (TextView) row.findViewById(R.id.exercise_list_text_view);
holder.imageView = (ImageView) row.findViewById(R.id.trash_button);
holder.editText = (EditText) row.findViewById(R.id.exercise_list_edit_text_view);
holder.deleteButton = (Button) row.findViewById(R.id.delete_button);
row.setTag(holder);
} else {
holder = (ExerciseListHolder) row.getTag();
}
final Exercise exercise = data.get(position);
holder.textView.setText(exercise.getName());
holder.imageView.setVisibility(View.GONE);
holder.editText.setVisibility(View.GONE);
holder.deleteButton.setVisibility(View.GONE);
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.imageView.setVisibility(View.GONE);
holder.deleteButton.setVisibility(View.VISIBLE);
holder.deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Database db = new Database(context);
db.deleteExercise(exercise);
notifyDataSetChanged();
}
});
}
});
row.setFocusable(true);
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.requestFocus();
Log.d("focused?", Boolean.toString(v.isFocusable()));
Log.d("focused?", Boolean.toString(v.isFocused()));
ExerciseListHolder holder = (ExerciseListHolder) v.getTag();
holder.editText.setText(holder.textView.getText());
holder.editText.setSelection(holder.editText.getText().length());
holder.imageView.setVisibility(View.VISIBLE);
holder.textView.setVisibility(View.GONE);
holder.editText.setVisibility(View.VISIBLE);
}
});
return row;
}
+3
source to share