gpt4 book ai didi

android - 屏幕旋转后以编程方式检查(选择)ListFragment 项目

转载 作者:行者123 更新时间:2023-11-30 03:26:29 25 4
gpt4 key购买 nike

我想在屏幕旋转后以编程方式(重新)突出显示选定的列表项。

public class MyListFragment extends ListFragment {
private static final String tag = MyListFragment.class.getName();
private static final String indexTag = "index";
private int index = -1;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
if (savedInstanceState != null) {
index = savedInstanceState.getInt(indexTag, -1);
Log.d(tag, "Restored index " + index + " from saved instance state.");
}
}

@Override
public void onResume() {
super.onResume();
if (index >= 0) {
showDetails(index);
}
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
showDetails(position);
}

private void showDetails(int index) {
this.index = index;
getListView().setItemChecked(index, true);
// update details panel
}

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(indexTag, index);
}
}

我在自定义适配器中使用 CheckedTextView 作为项目 View :

public class MyListAdapter extends BaseAdapter {
private static final String tag = MyListAdapter.class.getName();

@Override
public CheckedTextView getView(int position, View convertView, ViewGroup parent) {
if (convertView == null || !(convertView instanceof CheckedTextView)) {
final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.simple_list_item_single_choice, parent, false);
}
((CheckedTextView)convertView).setText("test");
return (CheckedTextView)convertView;
}
}

屏幕旋转后 showDetails() 被调用并且详细信息面板更新,但是 setItemChecked() 什么都不做并且该项目仍然没有突出显示。我还注意到,当它被触摸事件 setItemChecked() 单击时,不需要该项目,并且该行仍然突出显示。

那么如何在 onResume 阶段以编程方式检查项目?

最佳答案

将 showIndex(index) 放在您的 onActivityCreate() 中,因为在屏幕旋转时 Android 会破坏当前 Activity 并通过 Bundle savedInstanceState 创建另一个保存当前状态的 Activity

关于android - 屏幕旋转后以编程方式检查(选择)ListFragment 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18150174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com