EditText提供错误:TextView不支持文本选择.选择已取消 [英] EditText giving error : TextView does not support text selection. Selection cancelled

查看:365
本文介绍了EditText提供错误:TextView不支持文本选择.选择已取消的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有RecyclerView.位置0的元素是EditText的标头,然后所有其他元素都是图像.长按EditText会给出选项粘贴. 但是,当我将回收站"视图滚动到底部,然后再次移到顶部并长按时,它将不会显示粘贴选项,并且会出错. 在滚动到底部并再次滚动到顶部时,调用onBindViewHolder.

I have RecyclerView.The element at position is 0 is header for EditText ,then all other elements are images.On long pressing on EditText it gives option paste.This works fine. But when I scroll the recycler view to the bottom and again come to top and long press it will not show the paste option and gives error . On Scrolling to the bottom and again coming to top passes call to onBindViewHolder.

TextView:TextView不支持文本选择.选择已取消.

TextView: TextView does not support text selection. Selection cancelled.

public class Someclass extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {


    private static final int TYPE_EDIT = 0;
    private static final int TYPE_IMAGE = 1;
    List<String> msomelist = new ArrayList<String>();

    public void someMethod(List<String> somelist) {

        msomelist.clear();
        msomelist.addAll(somelist);
        notifyDataSetChanged();

    }




    public Someclass(Activity activity, List<String> somelist) {
        this.activity = activity;
        this.msomelist.clear();
        this.msomelist.addAll(somelist);
        mContext = activity;
    }

    @Override
    public int getItemViewType(int position) {

        if (position == 0)
            return TYPE_EDIT;

        return TYPE_IMAGE;
    }

    @Override
    public void onClick(View view) {
        int postition = (int) view.getTag();
        msomelist.remove(postition);
        notifyDataSetChanged();

    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
       ImageView img;

        public ViewHolder(View itemView) {
            super(itemView);

            img = (ImageView) itemView.findViewById(R.id.image);
        }
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == TYPE_IMAGE) {
            View view = LayoutInflater.from(mContext)
                    .inflate(somelayout, false);
            ViewHolder holder = new ViewHolder(view);
            return holder;
        } else {
            View view = LayoutInflater.from(mContext)
                    .inflate(someotherlayout, false);


            return new OtherHolder(view);
        }
    }

    class OtherHolder extends RecyclerView.ViewHolder {
        EditText editText;

        public OtherHolder(View itemView) {
            super(itemView);
            editText = (EditText) itemView.findViewById(R.id.ediItext);
            editText.requestFocus();
        }
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {

        if (holder instanceof ViewHolder) {
            some function.....
        } else if (holder instanceof OtherHolder) {
            some function
        }
    }
}

推荐答案

这是

This is a known bug in the Android platform. I didn't believe it at first, but the code @user2246055 posted is an effective workaround!

我希望将其添加到我的适配器中,而不是子类化TextView:

I preferred to add this in my Adapter instead of subclassing TextView:

        @Override
        public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
            super.onViewAttachedToWindow(holder);

            // Bug workaround for losing text selection ability, see:
            // https://code.google.com/p/android/issues/detail?id=208169
            holder.textView.setEnabled(false);
            holder.textView.setEnabled(true);
        }

这篇关于EditText提供错误:TextView不支持文本选择.选择已取消的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆