[英]How to prevent my ListView inside a Fragment to store the selected item and highlight it?
我有一個片段,其中包含一個ListView,用戶可以在其中選擇一項(單項選擇)。 所選的顏色通過顏色突出顯示。 當將片段替換為另一個片段並再次取回該片段時,盡管會調用片段onAttach()... onViewCreated方法,但仍會選擇該項目。
如何防止我的應用程序執行此操作? 當我顯示包含列表視圖的片段時,我總是希望有一個新的未選擇的列表。
這是我的代碼:
public class ServerListFragment extends Fragment {
//////////////////////////
// CONSTANTS
//////////////////////////
private static final String TAG = ServerListFragment.class.getName();
//////////////////////////
// PRIVATE VARIABLES
//////////////////////////
private ServerListFragmentCallbacks mCallback;
private Button mNextButton;
private ListView mListView;
//////////////////////////
// CONSTRUCTOR
//////////////////////////
public ServerListFragment() {
}
//////////////////////////
// LIFECYCLE
//////////////////////////
// 1 ON ATTACH
@Override
public void onAttach(Activity activity) {
Log.i(TAG, "onAttach()");
super.onAttach(activity);
// set up callback reference
try {
mCallback = (ServerListFragmentCallbacks) activity;
} catch (ClassCastException e) {
throw new ClassCastException("Activity must implement ServerListFragmentCallbacks.");
}
}
// 2 ON CREATE
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.i(TAG, "onCreateView()");
View v = inflater.inflate(R.layout.fragment_server_list, container, false);
return v;
}
// 3 ON CREATE VIEW
// 4 ON ACTIVITY CREATED
// 5 ON START
// 6 ON RESUME
// 7 ON PAUSE
// 8 ON STOP
// 9 ON DESTROY VIEW
// 10 ON DESTROY
// 11 ON DETACH
@Override
public void onDetach() {
Log.i(TAG, "onDetach()");
super.onDetach();
}
//////////////////////////
// OVERRIDE METHODS
//////////////////////////
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
Log.i(TAG, "onViewCreated()");
super.onViewCreated(view, savedInstanceState);
// next button
mNextButton = (Button) view.findViewById(R.id.server_list_next_button);
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallback.onServerListFragmentNextButtonClick();
}
});
// list view containing servers
mListView = (ListView) view.findViewById(R.id.server_list_view);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mListView.setSelection(position);
mListView.setItemChecked(position, true);
mNextButton.setEnabled(true);
}
});
mListView.setAdapter(new ServerListAdapter(getActivity(), DummyData.getServerList()));
}
//////////////////////////
// CALLBACK INTERFACE
//////////////////////////
public interface ServerListFragmentCallbacks{
public void onServerListFragmentNextButtonClick();
}
}
我希望有人能夠提供幫助。
覆蓋片段中的onPause()
並調用
mListView.setItemChecked(position, false);
您還需要存儲全局檢查的項目的位置,以便可以在onPause()
方法中訪問該位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.