Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onTouchListener不使用自定义视图_Android_Android Custom View_Ontouchlistener - Fatal编程技术网

Android onTouchListener不使用自定义视图

Android onTouchListener不使用自定义视图,android,android-custom-view,ontouchlistener,Android,Android Custom View,Ontouchlistener,我有一个自定义适配器类,它扩展了基本适配器。我试图在视图项上实现onTouchListener。但它不起作用。请帮忙 这是代码段 @Override public View getView(final int position, View convertView, ViewGroup parent) { View cellView=convertView; ViewHolder viewHolder; if(cellView==null) { Layo

我有一个自定义适配器类,它扩展了基本适配器。我试图在视图项上实现onTouchListener。但它不起作用。请帮忙

这是代码段

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View cellView=convertView;
    ViewHolder viewHolder;

    if(cellView==null) {

        LayoutInflater layoutInflater = (LayoutInflater) context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        cellView = layoutInflater.inflate(R.layout.grid_topics, parent, false);
        viewHolder = new ViewHolder();
        viewHolder.icon = (ImageView) cellView.findViewById(R.id.cellImageView);
        viewHolder.text = (TextView) cellView.findViewById(R.id.cellTextView);
        cellView.setTag(viewHolder);

    } else {
        viewHolder = (ViewHolder) cellView.getTag();
    }

    viewHolder.icon.setImageBitmap(list.get(position).image);
    viewHolder.text.setText(list.get(position).text);

    cellView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_UP) {
                Toast.makeText(context, list.get(position).text, Toast.LENGTH_SHORT).show();
                return true;
            }

            return false;
        }
    });
    return cellView;
}

在处理BaseAdapter时,请尝试遵循此方法。看看我是如何在if语句中实现onTouch侦听器的。这应该行得通

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;

    LayoutInflater mInflater = (LayoutInflater) 
        context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_item, null);
        holder = new ViewHolder();
        holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
        holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
        holder.imageView = (ImageView) convertView.findViewById(R.id.icon);
        convertView.setTag(holder);
        convertView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        if (event.getAction() == MotionEvent.ACTION_UP) {
            Toast.makeText(context, list.get(position).text, Toast.LENGTH_SHORT).show();
            return true;
        }

        return false;
    }
});
    }
    else {
        holder = (ViewHolder) convertView.getTag();
    }

    RowItem rowItem = (RowItem) getItem(position);

    holder.txtDesc.setText(rowItem.getDesc());
    holder.txtTitle.setText(rowItem.getTitle());
    holder.imageView.setImageResource(rowItem.getImageId());

    return convertView;
}

不,它仍然不起作用。你的代码和我的有什么不同?