Android的ListView中选择的项目保持突出 [英] Android ListView selected item stay highlighted

查看:155
本文介绍了Android的ListView中选择的项目保持突出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 XML 有两个的ListView ,一是与客户填补选择查询(名单 lv_cli )和其他与所选客户的详细信息(<$ C C> lv_cli_det )。 我想保持在选定的客户端 lv_cli ,而 lv_cli_det 显示详细信息。

XML:

 &LT;的ListView
    机器人:ID =@ + ID / cli_lista
    机器人:layout_width =512dp
    机器人:layout_height =WRAP_CONTENT
    机器人:fadeScrollbars =假
    &GT;
&LT; / ListView控件&GT;

&LT;的ListView
    机器人:ID =@ + ID / cli_lista_det
    机器人:layout_width =512dp
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_toRightOf =@ + ID / cli_lista
    机器人:fadeScrollbars =假&GT;
&LT; / ListView控件&GT;
 

Java的:

 光标光标= db.rawQuery(选择NrCl ||';'||诺姆从Clientes,NULL);
最终的ListView T =(ListView控件)findViewById(R.id.cli_lista);
ArrayAdapter&LT;字符串&GT; myarrayAdapter =新的ArrayAdapter&LT;字符串&GT;(这一点,android.R.layout.simple_expandable_list_item_1,listItems中的);
t.se​​tAdapter(myarrayAdapter);

最终的ListView TD =(ListView控件)findViewById(R.id.cli_lista_detalhe);
最后ArrayAdapter&LT;字符串&GT; myarrayAdapter2 =新的ArrayAdapter&LT;字符串&GT;(这一点,android.R.layout.simple_expandable_list_item_1,listItems2);

t.se​​tOnItemClickListener(新OnItemClickListener(){
    @覆盖
    公共无效onItemClick(适配器视图&LT;&GT;母公司视图中查看,INT位置,长的id){
        字符串项=((TextView中)查看).getText()的toString()。
        的String [] strArray = item.split(\\;);

        cli.load(strArray [0]的ToString());
        td.setAdapter(myarrayAdapter2);
        listItems2.clear();
        listItems2.add(诺姆:+ cli.getNome());
        listItems2.add(莫拉达:+ cli.getMorada()​​);
        listItems2.add(Localidade:+ cli.getLoca());
        listItems2.add(Código邮政:+ cli.getCp());
        listItems2.add(派斯:+ cli.getPais());
        listItems2.add(硝苯地平:+ cli.getNif());
        listItems2.add(电话:+ cli.getTel());
        listItems2.add(TLM:+ cli.getTlm());
        listItems2.add(TIPO preCO:+ cli.getTipoPvn());
        listItems2.add(。电导率Pagamento:+ cli.getCpg());
        listItems2.add(观测:+ cli.getObs());
        td.setAdapter(myarrayAdapter2);
        myarrayAdapter2.notifyDataSetChanged();
    }
});
 

解决方案

要持有ListView项的颜色,当你preSS它包括以下行您的列表视图的布局:

 安卓背景=@可绘制/ bg_key
 

然后定义bg_key.xml在绘制文件夹中是这样的:

 &LT; XML版本=1.0编码=UTF-8&GT?;
&LT;选择的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android&GT;
    &LT;项目
        机器人:state_selected =真
        机器人:可绘制=@色/ pressed_color/&GT;
    &LT;项目
        机器人:可绘制=@色/ default_color/&GT;
&LT; /选择器&GT;
 

最后,工作包括在列表视图onClickListener:

  listView.setOnItemClickListener(新OnItemClickListener(){

    @覆盖
    公共无效onItemClick(适配器视图&LT;&GT;母公司视图中查看,INT位置,长ARG3){
        view.setSelected(真正的);
        ... //什么
    }
});
 

这样的话,只有一个项目将是颜色选择在任何时间。你可以像这样定义RES /价值/ colors.xml你的颜色值:

 &LT; XML版本=1.0编码=UTF-8&GT?;
&LT;资源&GT;
    &LT;颜色名称=pressed_color&GT;#4d90fe&LT; /彩色&GT;
    &LT;颜色名称=default_color&GT;#FFFFFF&LT; /彩色&GT;
&LT; /资源&GT;
 

I have an XML with two ListView, one with a list of clients filled by a select query (lv_cli) and the other with the details of the client selected (lv_cli_det). I would like to keep the client selected in the lv_cli while the lv_cli_det show the details.

XML:

<ListView
    android:id="@+id/cli_lista"
    android:layout_width="512dp"
    android:layout_height="wrap_content"
    android:fadeScrollbars="false"
    >
</ListView>

<ListView
    android:id="@+id/cli_lista_det"
    android:layout_width="512dp"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/cli_lista"
    android:fadeScrollbars="false" >
</ListView>

Java:

Cursor cursor = db.rawQuery("Select NrCl||';'||Nome From Clientes", null);
final ListView t = (ListView)findViewById(R.id.cli_lista);
ArrayAdapter<String> myarrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, listItems);
t.setAdapter(myarrayAdapter);

final ListView td = (ListView)findViewById(R.id.cli_lista_detalhe);
final ArrayAdapter<String> myarrayAdapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, listItems2);

t.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String item = ((TextView)view).getText().toString();
        String[] strArray = item.split("\\;");

        cli.load(strArray[0].toString());
        td.setAdapter(myarrayAdapter2);
        listItems2.clear();
        listItems2.add("Nome: " + cli.getNome());
        listItems2.add("Morada: " + cli.getMorada());
        listItems2.add("Localidade: " + cli.getLoca());
        listItems2.add("Código Postal: " + cli.getCp());
        listItems2.add("Pais: " + cli.getPais());
        listItems2.add("Nif: " + cli.getNif());
        listItems2.add("Tel: " + cli.getTel());
        listItems2.add("Tlm: " + cli.getTlm());
        listItems2.add("Tipo Preço: " + cli.getTipoPvn());
        listItems2.add("Cond. Pagamento: " + cli.getCpg());
        listItems2.add("Obs: " + cli.getObs());
        td.setAdapter(myarrayAdapter2);
        myarrayAdapter2.notifyDataSetChanged(); 
    }
});

解决方案

To hold the color of listview item when you press it, include the following line in your listview layout:

android:background="@drawable/bg_key"

Then define bg_key.xml in drawable folder like this:

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:state_selected="true"
        android:drawable="@color/pressed_color"/>
    <item
        android:drawable="@color/default_color" />
</selector>

Finally, include this in your listview onClickListener:

listView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) {
        view.setSelected(true);
        ... //Anything
    }
});

This way, only one item will be color-selected at any time. You can define your color values in res/values/colors.xml with something like this:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="pressed_color">#4d90fe</color>
    <color name="default_color">#ffffff</color>
</resources>

这篇关于Android的ListView中选择的项目保持突出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆