Android listview 项目没有获得焦点

标签 android listview

我的 ListView 中的项目没有获得焦点,我的 onFocusChanged 没有工作所以我创建了一个日志语句来记录焦点并且我总是为 v.isFocused() 的结果返回“false”。

onClick 方法工作正常。

有什么想法吗?

@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;
}

最佳答案

也许添加到 ListView android:descendantFocusability="afterDescendants"可以帮助你。更多文档:here

关于Android listview 项目没有获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26664711/

相关文章:

android - Android中是否有像图像处理中的OpenCV这样的音频处理库?

android - ListView里面的两个LinearLayout和滚动问题

android - 我只想在左右角添加阴影

java - 如何使对话框 fragment 背景不可见?

Android点击按钮填充textview

android - 在 Google Glass 上使用 libstreaming 时找不到 Stsd 框

android - java.lang.SecurityException : Requires VIBRATE permission on Jelly Bean 4. 2

c# - ListView 的 GroupStyleSelector

python - Kivy ListItemButton - 如何增加按钮尺寸的高度?

c# - 如何使用 C# 为 ListView 控件中的项目添加边框?