程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 滑動-【急】gridView手勢移動,更改item背景顏色!

滑動-【急】gridView手勢移動,更改item背景顏色!

編輯:編程綜合問答
【急】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;
}

最佳回答:


1027462601加我,幫你寫了個demo、

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved