2 buaawuqiong280111 buaawuqiong280111 于 2016.03.30 22:56 提问

android listview相关问题,哪位高手请赐教,小弟初学在此谢过了

本人初学Android,求高手赐教,不管是否解决,先谢过了!
我利用自动自BaseAdapter实现了一个ListView,很简单,
就是有很多Item,本人想实现这样的功能:即只要手指触碰、滑动或者点击到其中某一个item,该item中显示的字体立即变为红色(默认为蓝色),注意,是立即,不是 手指点击离开后才改变然后当手指离开该item时,该item回复蓝色字体。
我现在的困扰有几点:手指点击某一item后字体不会立即变红,当手指抬起后才变化;另外,即使手指点击某一item时变为红色,一旦滑动了就会变回为蓝色,总之就是实现上述所说不管是触摸、滑动、点击立即变红,只有当手指抬起离开该item时才恢复蓝色。不知道我是否说明了,求高手赐教,我是自学的很迷茫,先谢谢了。
先说说我原来的思路: 我对该listview进行了setOnItemClickListener监听,当点击某一item时 ,记录下点击位置,然后通知adapter改变;然后在自定义adpater的getView()函数中判断,如果是点击位置,设置该item为红色字体,否则其他item为 蓝色字体。
主控制类的主要代码如下:
myadapter= new MyAdapter(this);
listview.setAdapter(myadapter);
listview.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
myadapter.selectItem=position;
myadapter.notifyDataSetChanged();
}
});

            自定义MyAdapter的getView()中部分代码如下: 
    if( position == selectItem)
    {
        holder.sets.setTextColor(0xffff0000);
    }else{
        holder.sets.setTextColor(0xff0000ff);
    }
  其中sets就是item中需要变色的TextView

    我的问题就是如何能立即变化,且包含触摸、滑动、点击,只要触碰到了该item就立即变红,即使滑动也是红色,直到离开变蓝。
    补充:以前我还用selector实现过,但是仅仅限于点击,一旦滑动或者不是点击,即便已经变红的item还会变蓝,该如何解决啊!!!
  说得太多了,望高手赐教,万分感谢!!!!!

5个回答

freedom_wings5
freedom_wings5   2016.03.30 23:01

覆写onTouch方法,其中在ACTION_DOWN里变,在ACTION_UP里变回来

buaawuqiong280111
buaawuqiong280111 刚刚试了下,的确可以,中间出了些其他问题,现在已解决,多谢,其他兄弟在此不一一答谢了,感谢各位回复,受益匪浅
一年多之前 回复
u010707039
u010707039   2016.03.30 23:29

listView.setOnTouchListener

liweicai137
liweicai137   2016.03.31 11:32

listview

<item android:drawable="@android:color/white" android:state_pressed="false"/>
<item android:drawable="@color/bg_content" android:state_pressed="true"/>

skyunicorn
skyunicorn   2016.03.31 16:19

设置一个selector,做为Item的TextColor就可以了

skyunicorn
skyunicorn 嗯,没看清楚,selector在滑动的时候没用,按楼上的重写onTouch试试吧
一年多之前 回复
cyxevil
cyxevil   2016.03.31 17:37

listView.setOnTouchListener

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!