ListView控件,点击一个项目,所有的项目中选择

我尝试实施这种方式的高效listViewAdapter:

if (itemView == null) { itemView = mInflater.inflate(R.layout.item, null); holder = new ViewHolder(); ... holder.background = (RelativeLayout)itemView.findViewById(R.id.item_background); ... itemView.setTag(holder); }else{ holder = (ViewHolder) itemView.getTag(); }

ListView中的项目是相似的:

public class MyItem { ... boolean isRed; ... }

我有这样的背景下(此选择设置好的android系统:背景,在XML R.layout.item)选择器,名为selector.xml:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@drawable/background_pressed" /> <item android:drawable="@drawable/background_no_pressed" /> </selector>

在listViewAdapter,我有:

if (myItems.get(position).getIsRed()) holder.background.setBackgroundResource(R.drawable.background_red);

哪里:

ArrayList<myItem> myItems = ...

我的问题:
从逻辑上讲,通过这种方式,项目显示为背景的“@绘制/ background_no_pressed”,而在这个项目改变按上一个项目,背景为“@绘制/ background_pressed”(列表中的停留其余项目以“无压”的背景)。 红色背景中显示myItems(position).getIsRed()==true ,但在逻辑上,当你滚动列表,其他项目都用红色背景显示(因为他们不断的观点持有者)。

所以我要添加到条件:

if (myItems.get(position).getIsRed()){ holder.background.setBackgroundResource(R.drawable.background_red); }else{ holder.background.setBackgroundResource(R.drawable.selector); }

但是,添加此,行为的变化,因为现在,当我点击一个项目,这个项目改变其背景,以“@绘制/ background_pressed”, 但其余的 (除了getIsRed()项== true)而显示有“压背景“也一样如果所有的人都被压(虽然日志表明只项目被按下时,它只是观看的问题)。

我可以解决这个问题,通过改变listViewAdapter去除如果条件(ItemView控件== NULL),并设置一个新的持有者为每个项目,而不是一个固定器为每个视图,但我认为这是没有效率的。

我能做什么? 谢谢。

分类:安卓 时间:2012-01-01 人气:0
分享到:

相关文章

  • 我怎样才能使机器人水平的ListView? 2012-03-06

    可能重复: 在Android的水平的ListView? 就像Android的很多东西,你就不会认为这将是这样一个困难的问题,但哦~~,天哪,你是错的. 而且,像在Android的很多事情,该API甚至没有提供一个合理的可扩展的起点. 如果我要推出自己的ListView,当所有我想要的是拿东西,并把它在其一侧,我会被定罪. \咆哮 好了,现在我做发烟,让我们来谈谈这个问题本身. 我需要的是基本的东西完全一样的Gallery ,但是没有中央锁功能. 我并不真正需要ListView的listSelec

  • AndroidWebImageView机器人福在ListView 2014-10-07

    我有一个列表视图在那里我有加载自定义URL imageviews. 我有一个再次加载的ressource负载的问题,所以它向上和向下滚动,因为每次ressources将重新加载时挂起. 首先,只有一个视图中的列表视图类型,我叫上web视图复位(),但也有一些没有加载正确的URL的图像. 于是,我试图返回的行数为typeCount和位置VOR的viewType: getViewTypeCount () returns table.length(); //the same as getCount()

  • 机器人 - 填充的ListView与阵列 2012-06-08

    我无法填补一个ListView布局的字符串数组. 下面是活动: ListView symptomList = (ListView) findViewById(R.id.ListView_Symptom); String symptomsArray[] = new String[1024]; // Then I fill up symptomsArray ArrayAdapter<String> adapt = new ArrayAdapter<String>(this, R.lay

  • 机器人:在ListView复选框(所选元素的奇怪行为) 2012-07-23

    我发现这里和这里类似的问题,但问题是稍有不同. 在一个ListView,我尽量把一个适配器(从底座适配器扩展)的内容复选框. 列表视图布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/mainLayout&quo

  • 机器人 - 指数的ListView? 2013-07-07

    是有可能对ListView的右手侧的索引? 这可能是在哪里跑下来右手边的字母显示在iPhone上. 在谈到字母一个字母带来一到在ListView中的项目开始以该字母开头. 是否有内置的代码在Android的这个功能? 还是这东西一会要定做? --------------解决方案------------- 有没有你想要什么. 有一个非常类似的事情. 首先设置你的ListView的快速滚动模式: ListView.setFastScrollEnabled(true); 接下来的落实适配器如下界面:

  • 机器人没有的ListView适配器RESOURCEID 2013-10-01

    基于Android中的Hello-的ListView turorial,http://developer.android.com/resources/tutorials/views/hello-listview.html 在 setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES)); 有一个错误,因为没有R.layout.list_item 以前我曾跟随本教程中,创建的RES /布局文件夹中的文件

  • 机器人:在ListView中自定义(复方)控制 2014-01-06

    我有一个srange麻烦机智的ListView控件:我创建了复合控制 public class TopicControl extends LinearLayout .... <merge xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/llTopicHeader" android:layout_width="

  • 我如何更新用户界面的机器人appwidget 2014-08-13

    我敢肯定,我失去了一些东西,但我只是想获得一个应用程序窗口小部件一个按钮和一个计数器. 每当我按一下按钮我希望计数器1更新. 我给自己定了WidgetProvider的的OnUpdate()函数,以便它开始碰到柜台numbver服务注册未决事件到按钮: Intent active = new Intent(context, CounterService.class); active.setAction(CounterService.COUNT); PendingIntent pending =

  • Android的布局与ListView和按钮 2012-08-26

    好吧,这个特定的布局仅仅是讨厌我. 而且似乎无法找到一种方法,有一个列表视图,有一排按键在底部,所以该列表视图不会延伸到按钮的上方,因此,按钮总是捕捉到屏幕的底部. 这是我想要的: 现在看来似乎应该是很容易的,但一切我已经试过失败. 任何帮助吗? 这里是我当前的代码: RelativeLayout container = new RelativeLayout(this); container.setLayoutParams(new RelativeLayout.LayoutParams(Layo

  • 通过使用HashMap中从数据库列表视图数据不工作 2013-04-03

    这个问题已经在这里有一个答案: RuntimeException的:您的内容必须有一个ListView的id属性是'android.R.id.list'6回答 我试着用listview.I一个Android项目通过使用HashMap和结果显示在列表视图中添加DB中值. 但我不能启动correctly..pls帮我解决这个... 这里是我的Java代码 package com.example.subitemlistviewdb; import java.util.ArrayList; import

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.673 (s). 10 q(s)