kik*_*iki 15 android focus listviewitem android-listview
一个活动有一个Button和一个ListView.最初,只有Button可见.按下按钮时,将显示ListView.显示时,我是否可以将一个特定项目显示为选中/聚焦?
用例可以是假设它是语言设置列表,当列表打开时,当前选择的语言必须显示为突出显示.
如果我知道该项目的索引,如何将其设置为专注于显示?
小智 40
我发布我的解决方案,因为谷歌仍然不知道答案.
getListView().setItemChecked(selectedGroupIndex, true);
Run Code Online (Sandbox Code Playgroud)
onl*_*ygo 15
简而言之,ListView :: setSelection(int position)就是您所需要的.但是,根据设备是否处于触摸模式,它可能有也可能没有视觉效果(背景突出显示).有关更多详细信息,请参阅Android ListView选择问题
Bob*_*obs 13
如果您使用Adapter您ListView将此代码添加到您的适配器:
public class MyAdapter extends ArrayAdapter<MyClass> {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflator = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflator.inflate(R.layout.my_adapter, null);
} else {
rowView = (View) convertView;
}
//...
// set selected item
LinearLayout ActiveItem = (LinearLayout) rowView;
if (position == selectedItem){
ActiveItem.setBackgroundResource(R.drawable.background_dark_blue);
// for focus on it
int top = (ActiveItem == null) ? 0 : ActiveItem.getTop();
((ListView) parent).setSelectionFromTop(position, top);
}
else{
ActiveItem.setBackgroundResource(R.drawable.border02);
}
}
private int selectedItem;
public void setSelectedItem(int position) {
selectedItem = position;
}
}
Run Code Online (Sandbox Code Playgroud)
在你的Activity:
myAdapter.setSelectedItem(1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64994 次 |
| 最近记录: |