我做了一个列表视图。计划是,当你选择一个项目时,它应该显示为选中状态(背景颜色改变),当你选择另一个项目时,之前选择的项目再次正常。有办法做到这一点吗?我一直在尝试很多事情,但都没用。。。
这是我目前的代码。。。
/*Listview testing*/
final ListView listview = (ListView) findViewById(R.id.listView1);
String[] values = new String[] {
"Case White",
"Operation Weser-Exercise",
"Case Yellow",
"April War",
"Operation Barbarossa",
"D-day" };
final ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < values.length; ++i) {
list.add(values[i]);
}
final StableArrayAdapter adapter = new StableArrayAdapter(this,
android.R.layout.simple_list_item_1, list);
listview.setAdapter(adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view,
int position, long id) {
//This doesn't work:
//listview.findViewById((int) selid).setBackgroundColor(Color.TRANSPARENT);
view.setSelected(true);
view.setBackgroundColor(Color.LTGRAY);
Context context = getApplicationContext();
CharSequence text = "id: " + id;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
selid = id;
}
});
标记其中一个是有效的,但删除选择是我的问题。有什么建议吗?
编辑:我要找的是,在我选择另一个项目之前,它一直处于选中状态
第一件事是将ListView配置为singleChoice,因为只能选择一项:
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:choiceMode="singleChoice">
</ListView>
然后,您需要创建一个选择器。这是您将为每个定义的状态配置颜色的地方。所选文件位于res/draable目录中。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:drawable="@android:color/holo_orange_dark" android:state_pressed="true"/>
<item android:drawable="@android:color/holo_green_light" android:state_selected="true"/>
<item android:drawable="@android:color/holo_green_light" android:state_activated="true"/>
</selector>
然后,在项目布局上,在顶层添加属性activatedBackgroundIndicator:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="?android:attr/activatedBackgroundIndicator">
<!-- your item content-->
</LinearLayout>
最后,需要将选择器链接到ListView。这可以在ListActivity的onCreate方法或ListFragment的onActivityCreated方法中完成。
this.getListView().setSelector(R.drawable.your_selector);
这就是全部。
//编辑
我没有解释如何改变蓝色。以下是解决方案:
创建一个文件*res/drawable/listitem_background。包含以下内容的xml*:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@color/purple_dark" />
<item android:drawable="@android:color/transparent" />
</selector>
用您选择的颜色替换*@color/purple_dark*。
然后,在主题中添加以下行:
<item name="android:activatedBackgroundIndicator">@drawable/listitem_background</item>
视频:http://www.youtube.com/watch?v=BlZmE6Fk40M
我认为问题在于,你的onItemClick
方法只对点击的列表项激发。列表中的其他每一项都保持不变。
您需要的是一次更新所有项目的方法。最简单的方法是编写扩展BaseAdapter的自定义适配器,然后调用myAdapter.notifyDataSetChanged()
。如果您愿意,我可以提供一个示例,但我建议您查找有关扩展BaseAdapter的教程。
我的ListView自定义适配器(及其新实现的viewHolder)有一些问题。我有一个列表视图,每个项目都有一个复选框(这里没有新内容)。问题是,如果我的列表中有超过9个项目,当我选中第一个复选框时,第十个将自动选中(第二个与第十一个相同),就像两个项目都有一个监听器一样(我认为在某种程度上是这样)。 我在这里读到了listView、视图回收和ViewHolder解决它的方法的位置问题:如何使我
我有一个列表视图,当我的活动开始时,我想要第一个项目将有背景,其他项目没有任何背景。之后,如果用户选择任何其他项目,则该特定项目的背景现在将为蓝色,其余部分将没有任何背景。请帮帮我。 My layout_effect.xml 设置默认背景的GetView代码 listview的任何我的onclickListner 我的列表视图xml 请帮帮我,我怎么才能解决这个问题,我从昨天开始就被困在里面了。
问题内容: 我有这个数据库存储传感器采集数据, 采集(acq)来自不同控制单元(cu)的固定间隔(日期时间) 每个采集在数据表中存储了许多不同的度量 我需要这种观点: 作为: v1是data.value(例如湿度),其中 acq.id_cu = 1 AND data.id_meas = 100 v2是data.value(例如计数器),其中 acq.id_cu = 2 AND data.id_me
问题内容: 我试图以与从中选择类似的方式选择的列名称。 我似乎找不到解决办法。有没有其他人以前做过此事,或者知道是否有可能? 问题答案: information_schema.columns.Table_name(至少在Sql Server 2000下)包含视图,因此只需使用
我需要在单击ListView时更改选定项目的颜色,以便用户知道单击了什么。 到目前为止,我已经为此编写了以下代码: 它所做的是更改所选项目的背景色,并保持原样,直到我单击另一个项目,使其仅更改当前项目所选的背景色 我还想知道是否有一种XML方法可以做到这一点。到目前为止,我发现: 但我还没有得到之前代码的功能。不过,它所做的是更改背景颜色,并在单击时更改背景颜色,但不使用特定的颜色保留选定的项目
我有两个活动,第一个包含列表视图,当用户单击该列表视图的列表项时,将启动详细信息视图活动(第二个活动)。 现在在第二个活动中,我有2个按钮,NEXT按钮和PREVIOUS按钮,所以当用户单击NEXT按钮时,必须显示第一个活动的下一个列表项。单击上一个按钮时,必须显示上一个列表项。 我在第一个活动中扩展了ArrayAdapter,以显示自定义列表项。适配器上有2个项目,即2个文本视图。 当用户单击并