求助大神,Android studio 隐藏listview里某一个item里的某一个控件应该怎么做?用view.Gone。

2025-01-08 02:51:05
推荐回答(1个)
回答1:

点击右侧的按钮,显示或者隐藏底部的操作布局,实现Item的部分布局的动态显示.
##涉及到的知识点 ## 1.inflate方法的不同参数的含义,以及作用. 2.View的绘制过程,主要包含onMeasure,onLayout,onDraw这三个方法. 3.自定义View. 4.如何控制Item的部分布局的显示,隐藏.
如何控制Item的部分布局的显示,隐藏
实现思路通过标记一个全局变量来记录当前是那个Item正在被操作(右侧按钮被点击),初始化的position是-1,表示所有的底部操作布局都是隐藏的.

/***
* 标记操作下表的位置:从0开始
*/
public int mShowBottomPosition = - 1 ;

同时需要一个状态来标记当前被操作的Item的状态(隐藏或者显示).

/**
* 表示当前position的状态
*/
public int mCurrentPositionStatus = HIDE_BOTTOM ;
public static final int SHOW_BOTTOM = 1 ;
public static final int HIDE_BOTTOM = 0 ;

为Item的右侧按钮添加点击事件,改变mShowBottomPosition的数值为当前点击的position.同时修改mCurrentPositionStatus的状态,如果被点击的Item的底部布局之前处于隐藏状态,则mCurrentPositionStatus = SHOW_BOTTOM,否则mCurrentPositionStatus = HIDE_BOTTOM.然后执行notifyDataSetChanged方法,重新绘制布局. 为右侧的按钮添加点击事件.代码如下:

holder . mGoImage . setOnClickListener ( new OnClickListener ( )
{
@Override
public void onClick ( View v )
{
showOrHideBottom ( holder , position ) ;
}
} ) ;

/**
* 显示或者隐藏底部控制器
*
* @param position 位置
*/
private void showOrHideBottom ( ViewHolder holder , int position )
{
LogUtils . i ( TAG , "mShowBottomPosition111 :" + mShowBottomPosition + " position :" + position ) ;
if ( mShowBottomPosition != position )
{
mShowBottomPosition = position ;
mCurrentPositionStatus = SHOW_BOTTOM ;
} else
{
mShowBottomPosition = position ;
if ( mCurrentPositionStatus = = HIDE_BOTTOM )
{
mCurrentPositionStatus = SHOW_BOTTOM ;
} else
{
mCurrentPositionStatus = HIDE_BOTTOM ;
}
}
mAdapter . notifyDataSetChanged ( ) ;
}