大佬教程收集整理的这篇文章主要介绍了Android ==> ListView保持选择?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
但是,如果您希望用户选择一个项目,然后在同一个屏幕上显示有关该项目的信息,则这种行为是非常烦人的.如果选择消失,用户应该如何知道他们点击什么(假设用户有金鱼的注意力)?
一个可能的解决方案是将所有列表项更改为单选按钮.我真的不喜欢这个解决方案,因为它浪费了屏幕空间.我宁愿只使用背景颜色来显示选择的项目.到目前为止,我已经看到了一个解决方案,但是并不完全或一般.所以这里是我的解决方案:
1.在您的XML布局文件中
转到您的ListView元素和以下属性:android:choiceMode =“singleChoice”.我不完全确定这是什么(本身不允许用户选择任何东西),但没有这个属性,下面的代码不起作用.
2.定义以下类
它用于跟踪所选项目,还允许您模拟Java中的传递参考:
public class IntHolder { public int value; public intHolder() {} public intHolder(int v) { value = v; } }
我会假设你把它放在你的活动中,但它可以在任何类中真的:
static void setListItems(Context context,AdapterView listView,List listItems,final IntHolder SELEctedPosition) { setListItems(context,listView,listItems,SELEctedPosition,android.R.layout.simple_list_item_1,android.R.layout.simple_spinner_dropdown_item); } static void setListItems(Context context,final IntHolder SELEctedPosition,int list_item_id,int dropdown_id) { listView.setOnItemClickListener(new AdapterView.onItemClickListener() { public void onItemClick(AdapterView<?> list,View lv,int position,long id) { SELEctedPosition.value = position; } }); ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(context,list_item_id,listItems) { @Override public View getView(int position,View convertView,ViewGroup parent) { View itemView = super.getView(position,convertView,parent); if (SELEctedPosition.value == position) itemView.setBACkgroundColor(0xA0FF8000); // orange else itemView.setBACkgroundColor(Color.TRANSPARENT); return itemView; } }; adapter.setDropDownViewresource(dropdown_id); listView.setAdapter(adapter); }
此代码执行以下两件事情:它将您的列表项(例如List< String>)附加到您的ListView,并用一些改变所选项目背景的代码覆盖ArrayAdapter.getView().
4.使用该代码设置列表
例如:
ListView _list; IntHolder _SELEctedItem = new IntHolder(-1); // nothing SELEcted at first @Override protected void onCreate(Bundle savedInstanceStatE) { ... _list = (ListView)findViewById(R.id.list); List<String> items = Arrays.asList("Item 1","Item 2","Item 3"); setListItems(this,_list,items,_SELEctedItem); }
就这样!上面假设你想要单选.通过对getView()的一些小的修改,您可以支持多选,我猜,但您应该可以使用复选框.
警告:此解决方案需要进一步开发.如果用户使用箭头键或按钮来选择项目,则不会从IntHolder的角度选择该项目.如果用户按下未标记的按钮(该按钮的名称是什么?“输入”?),则该项目将被“正式”选择,但是您还有另一个问题,因为如果用户再次使用箭头键,那么它将会看起来喜欢两个项目被选中.如果您想知道如何使IntHolder中的“内部选择”与“键盘选择”同步,或者称之为任何内容,请发表评论.它叫什么呢?
以上是大佬教程为你收集整理的Android ==> ListView保持选择?全部内容,希望文章能够帮你解决Android ==> ListView保持选择?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。