我有一个 XML
有两个的ListView
,一是与客户填补选择查询(名单 lv_cli
)和其他与所选客户的详细信息( lv_cli_det )。
我想保持在选定的客户端 lv_cli
,而 lv_cli_det
显示详细信息。
XML:
<的ListView
机器人:ID =@ + ID / cli_lista
机器人:layout_width =512dp
机器人:layout_height =WRAP_CONTENT
机器人:fadeScrollbars =假
>
< / ListView控件>
<的ListView
机器人:ID =@ + ID / cli_lista_det
机器人:layout_width =512dp
机器人:layout_height =WRAP_CONTENT
机器人:layout_toRightOf =@ + ID / cli_lista
机器人:fadeScrollbars =假>
< / ListView控件>
Java的:
光标光标= db.rawQuery(选择NrCl ||';'||诺姆从Clientes,NULL);
最终的ListView T =(ListView控件)findViewById(R.id.cli_lista);
ArrayAdapter<字符串> myarrayAdapter =新的ArrayAdapter<字符串>(这一点,android.R.layout.simple_expandable_list_item_1,listItems中的);
t.setAdapter(myarrayAdapter);
最终的ListView TD =(ListView控件)findViewById(R.id.cli_lista_detalhe);
最后ArrayAdapter<字符串> myarrayAdapter2 =新的ArrayAdapter<字符串>(这一点,android.R.layout.simple_expandable_list_item_1,listItems2);
t.setOnItemClickListener(新OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>母公司视图中查看,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在绘制文件夹中是这样的:
< XML版本=1.0编码=UTF-8&GT?;
<选择的xmlns:机器人=http://schemas.android.com/apk/res/android>
<项目
机器人:state_selected =真
机器人:可绘制=@色/ pressed_color/>
<项目
机器人:可绘制=@色/ default_color/>
< /选择器>
最后,工作包括在列表视图onClickListener:
listView.setOnItemClickListener(新OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>母公司视图中查看,INT位置,长ARG3){
view.setSelected(真正的);
... //什么
}
});
这样的话,只有一个项目将是颜色选择在任何时间。你可以像这样定义RES /价值/ colors.xml你的颜色值:
< XML版本=1.0编码=UTF-8&GT?;
<资源>
<颜色名称=pressed_color>#4d90fe< /彩色>
<颜色名称=default_color>#FFFFFF< /彩色>
< /资源>
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>