Allen Lu~ 2015-11-19 06:56 采纳率: 50%
浏览 1602
已采纳

【急】gridView手势移动,更改item背景颜色!

在gridView上手指移动,在移动路径上的item背景颜色发生改变! 如图:图片说明
本人的思路:
是在Activity里面创建了一个手势的内部类,重写onSroll方法(这个方法是判断用户手势按下之后移动的事件),因为GridView监听是写在activity里面的,在内部类里面的onSroll里面把gridView的监听写在这个里面;gridView监听里面判断position是否相等,然后new adapter类的对象通过对象调用getDropDownView的方法(android的方法,getView差不多)取到显示在item上面的textView的id 然后通过textView对象设置背景颜色,实现上图! 但是发现运行起来的时候只有点击有反应 滑动的时候并没有反应! 求大神解答! 以下是Demo的详细片段

存在activity中的内部类:

private class MyGestureListener extends SimpleOnGestureListener {

    @Override
    public boolean onScroll( MotionEvent e1, MotionEvent e2, float distanceX, float distanceY ) {
        int gvFlag = 0; // 每次添加gridview到viewflipper中时给的标记

        if ( e1.getX() - e2.getX() > 30 ) {
            // 像左滑动
            // enterNextMonth(gvFlag);
            // lessonDateAdapter.getItem(position);
            // Log.d("---->", "::" + gridView.getChildCount());
            // gridView.setBackgroundColor(Color.RED);
            getMonitor();
            return true;
        } else if ( e1.getX() - e2.getX() < -30 ) {
            // 向右滑动
            // enterPrevMonth(gvFlag);
            getMonitor();
            return true;
        }
        return false;
    }
}

activity中的gridView监听事件:

    public void getMonitor() {
    gridView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick( AdapterView<?> parent, View view, int position, long id ) {

            // 点击任何一个item,得到这个item的日期(排除点击的是周日到周六(点击不响应))
            int startPosition = calV.getStartPositon();
            int endPosition = calV.getEndPosition();
            if ( startPosition <= position + 7 && position <= endPosition - 7 ) {
                /** 用户点击后弹出对话框 */
                if ( gridView.getItemIdAtPosition(position) == position ) {
                                           //adapter是new的gridView适配器类的对象;
                    adapter.getDropDownView(position, view, null);
                    // tv_gvItem.setText("----");
                }
            }
        }
    });
}

adapter中重写的方法:

@Override 
publicView getDropDownView( int position, View convertView, ViewGroup parent ) {
    textView = (TextView) convertView.findViewById(R.id.tvtext);
    if ( position == getItemId(position) ) {
        textView.setTextColor(Color.BLUE);
    } else {
        textView.setTextColor(Color.RED);
    }
    Log.d("---->", ":::" + textView);
    return convertView;
}
  • 写回答

2条回答 默认 最新

  • 水的川 2015-11-19 08:16
    关注

    1027462601加我,帮你写了个demo、

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序