【问题标题】:GridView : Get a view by positionGridView : 按位置获取视图
【发布时间】:2011-07-05 13:00:08
【问题描述】:

我正在使用网格视图来显示月历。当我触摸日历上的日期时,通过更改其背景和文本颜色来突出显示相应的单元格。一切都像魅力一样,除了如果我选择一个新日期,我无法取消突出显示一个单元格。

当我点击一个日期时,我会记住这个位置,所以当我选择一个新的日期时,我知道我之前点击的位置:

protected OnClickListener onClicThisMonthDate(final int position)
{
    return new OnClickListener() {

        @Override
        public void onClick(View v) 
        {
            if(prevDateSelected > -1 )
            {
                //Get the view by the oldPosition
                //Change its background and text color
            }
            prevDateSelected = position;
            TextView casecal = (TextView) v.findViewById(R.id.case_cal);
            casecal.setBackgroundColor(Color.rgb(93, 94, 94));
            casecal.setTextColor(Color.WHITE);
        }
    };
}

有没有办法通过他的立场来获得观点?选择一个单元格并取消选择所有其他单元格的最有效方法是什么? 注意:“选择一个单元格”是指通过更改样式来突出显示它。

【问题讨论】:

    标签: android gridview


    【解决方案1】:

    ViewGroup.getChildAt 返回组中指定位置的视图。

    GridView.setSelection选择该位置的视图并取消选择其他视图。

    【讨论】:

    • GridView.setSelection 很遗憾不能在触摸模式下工作。获取 childAt 似乎没问题,但是有没有办法只更新这个视图而不是所有的 gridview ?
    • 调用 View.invalidate()(来自 UI 线程)或 View.postInvalidate()(来自非 UI 线程)只更新一个视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    相关资源
    最近更新 更多