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


1 answer


Perhaps adding viewroid: descendantFocusability = "afterDescendants" to the list can help you. More in the docs: here



+1


source







All Articles