我使用数组与复选框一同显示。我想确保单击完成按钮时,与实体选中它会记住最后选定的实体,所以当我回到这一观点,显示为选定最后选择的数组对象(因为我选择了它最后一次)。有没有什么办法可以做到这一点在我的code与共享preferences? 这是我的code:
公共类DashboardManageMarketsFragment扩展AbsLoaderItemFragment实现OnClickListener,SelectionCallBack {
公共最后静态字符串TAG_MANAGE_DASHBOARD_MARKETS_FRAGMENT =DashboardManageMarketsEditFragment;
私人布尔mIsDoneButtonClicked;
公共静态最后弦乐CATEGORY_NAME =类别名称;
私人字符串mTemplateId;
私有静态字符串m_keyword =指数;
私有静态字符串m_keyword1 =品;
私有静态字符串m_keyword2 =点;
私有静态字符串m_keyword3 =基准;
公共静态最后弦乐GRID_NAME =gridName;
公共静态DashboardManageMarketsFragment的newInstance(最终FragmentManager经理){
最后DashboardManageMarketsFragment片段=新DashboardManageMarketsFragment();
最后的捆绑包=新包();
fragment.setArguments(包);
最后FragmentInfo fragmentInfo =新FragmentInfo(TransactionMethods.ADD,R.id.fragment_container);
fragmentInfo.setFragmentTag(TAG_MANAGE_DASHBOARD_MARKETS_FRAGMENT);
fragmentInfo.setAnimation(R.anim.no_animation,R.anim.no_animation);
fragmentInfo.setPopAnimation(R.anim.no_animation,R.anim.no_animation);
。FragmentStackManager.getInstance()transitionFragment(经理,片段,fragmentInfo);
返回片段;
}
私人ExpandableListView categoriesList;
私人MenuExpandableListAdapter mAdapter;
私人诠释iSelected = 0;
@覆盖
公共无效选择(字符串文本,诠释组,诠释儿童){
iSelected =组;
Log.d(测试员,在这里它覆盖+组);
}
私人地图<字符串,字符串>图=新的HashMap<字符串,字符串>();
公共静态最后弦乐默认为默认 - 符号,最后,网Chng(更改),%Chng(更改);
公共静态最后的String []组=新的String [] {指标,商品,外汇现货,基准};
公共静态最后的String [] []孩子=新的String [] [] {
{m_keyword},
{m_keyword1},
{m_keyword2},
{m_keyword3}
};
布尔isWmUser = FALSE;
@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,捆绑savedInstanceState){
查看查看= inflater.inflate(R.layout.fragment_dashboard_manage_markets,集装箱,假);
categoriesList =(ExpandableListView)view.findViewById(R.id.categories);
isWmUser = UserProfileManager.getInstance()isWealthManagement()。
字符串currTemplate = DashboardManageMarketsFragment.Default;
对于(@燮pressWarnings(rawtypes)Map.Entry的条目:map.entrySet()){
如果(mTemplateId.equals(entry.getValue())){
currTemplate =(字符串)entry.getKey();
打破; //断裂了,因为它的一对一映射
}
}
mAdapter =新MenuExpandableListAdapter(DashboardManageMarketsFragment.groups,DashboardManageMarketsFragment.children,currTemplate,this.getActivity());
mAdapter.setSelectionListner(本);
categoriesList.setGroupIndicator(空);
categoriesList.setChildIndicator(空);
categoriesList.setAdapter(mAdapter);
categoriesList.setOnChildClickListener(mAdapter);
返回查看;
}
公共无效的OnUpdate(意图数据){
restartContentLoader();
}
@覆盖
公共无效onActivityCreated(包savedInstanceState){
super.onActivityCreated(savedInstanceState);
LayoutUtils.showLoading(getView(),R.id.manage_market_list);
}
@覆盖
公共乌里onCreateContentUri(){
建设者建设者= MarketsContentProvider.MARKETS_GRID_URI.buildUpon();
返回builder.build();
}
@覆盖
公共无效onCursorLoaded(最终开放的URI,最终光标光标){
如果(!mIsDoneButtonClicked){
如果(cursor.getCount()大于0){
mCursor =光标;
showResults(URI);
Log.d(marketsstuff,我在donebutton);
} 其他 {
如果(!isOperationExecuting()){
showNoResults(URI);
}
}
}
}
@覆盖
公共无效的OnStart(){
super.onStart();
setupListeners();
}
@覆盖
公共无效onResume(){
最后IntentFilter的过滤器=新的IntentFilter();
filter.addAction(BroadcastActions.MARKETS_DASHBOARD);
super.onResume();
}
@覆盖
公共无效的onPause(){
super.onPause();
}
@覆盖
公共无效showResults(URI URI){
LayoutUtils.showResults(getView(),R.id.manage_market_list);
}
@覆盖
公共无效showNoResults(URI URI){
showResults(URI);
}
私人无效setupListeners(){
ManageDashboardMarketsActivity活性=(ManageDashboardMarketsActivity)getActivity();
activity.setDoneButtonEnabled(这一点,真正的);
}
@覆盖
公共无效的onClick(最终查看视图){
ManageDashboardMarketsActivity活性=(ManageDashboardMarketsActivity)getActivity();
开关(view.getId()){
案例R.id.button_done:
activity.hideSoftKeyboard(getView());
打破;
默认:
打破;
}
}
公共无效editList(){
ManageDashboardMarketsActivity活性=(ManageDashboardMarketsActivity)getActivity();
mIsDoneButtonClicked = TRUE;
activity.setDoneButtonEnabled(这一点,假);
DashboardManageMarketsOperation operationvar =新DashboardManageMarketsOperation(MarketsContentProvider.MARKETS_GRID_URI);
operationvar.setIndex(iSelected);
RestService.start(getActivity(),operationvar);
Log.d(里编辑列表测试员,);
}
@覆盖
公共布尔setViewValue(查看为arg0,光标ARG1,ARG2 INT){
// TODO自动生成方法存根
返回false;
}
解决方案
这应该很容易。建立在共享preFS这2个功能:
公共无效savemarketsselectedindex(INT的selectedIndex){
mShared preferences.edit()putInt(PROPERTY_MARKETS_INDEX,的selectedIndex)。适用()。
Log.d(newsdash,);
}
公众诠释getmarketsselectedindex(){
返回mShared preferences.getInt(PROPERTY_MARKETS_INDEX,0);
}
调用这个类中的:
私人INT iSelected =共享preferencesManager.getInstance()getmarketsselectedindex()。
和这里面的公共无效选择:
共享preferencesManager.getInstance()savemarketsselectedindex(iSelected)。
和shold基本工作。
I am using an array to display along with checkboxes. I want to make sure when the done button is clicked and the entity is selected it remembers the last selected entity so when I go back to this view it shows the last selected array object as selected (as I selected it last time). Is there any way I can achieve that in my code with shared preferences? Here's my code:
public class DashboardManageMarketsFragment extends AbsLoaderItemFragment implements OnClickListener,SelectionCallBack {
public final static String TAG_MANAGE_DASHBOARD_MARKETS_FRAGMENT = "DashboardManageMarketsEditFragment";
private boolean mIsDoneButtonClicked;
public static final String CATEGORY_NAME = "categoryName";
private String mTemplateId;
private static String m_keyword = "Indices";
private static String m_keyword1 = "Commodities";
private static String m_keyword2 = "Spot";
private static String m_keyword3 = "Benchmarks";
public static final String GRID_NAME = "gridName";
public static DashboardManageMarketsFragment newInstance(final FragmentManager manager) {
final DashboardManageMarketsFragment fragment = new DashboardManageMarketsFragment();
final Bundle bundle = new Bundle();
fragment.setArguments(bundle);
final FragmentInfo fragmentInfo = new FragmentInfo(TransactionMethods.ADD, R.id.fragment_container);
fragmentInfo.setFragmentTag(TAG_MANAGE_DASHBOARD_MARKETS_FRAGMENT);
fragmentInfo.setAnimation(R.anim.no_animation, R.anim.no_animation);
fragmentInfo.setPopAnimation(R.anim.no_animation, R.anim.no_animation);
FragmentStackManager.getInstance().transitionFragment(manager, fragment, fragmentInfo);
return fragment;
}
private ExpandableListView categoriesList;
private MenuExpandableListAdapter mAdapter;
private int iSelected = 0;
@Override
public void selected(String text, int group, int child) {
iSelected = group;
Log.d("tester","here it overrides"+group);
}
private Map<String, String> map = new HashMap<String, String>();
public static final String Default = "Default - Symbol, Last, Net Chng, % Chng";
public static final String[] groups = new String[] { "Indices", "Commodities", "FX Spot", "Benchmarks" };
public static final String[][] children = new String[][] {
{ m_keyword } ,
{ m_keyword1 },
{ m_keyword2},
{ m_keyword3 }
};
boolean isWmUser = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dashboard_manage_markets, container, false);
categoriesList = (ExpandableListView)view.findViewById(R.id.categories);
isWmUser = UserProfileManager.getInstance().isWealthManagement();
String currTemplate = DashboardManageMarketsFragment.Default;
for(@SuppressWarnings("rawtypes") Map.Entry entry: map.entrySet()){
if(mTemplateId.equals(entry.getValue())){
currTemplate = (String) entry.getKey();
break; //breaking because its one to one map
}
}
mAdapter = new MenuExpandableListAdapter(DashboardManageMarketsFragment.groups, DashboardManageMarketsFragment.children, currTemplate, this.getActivity());
mAdapter.setSelectionListner(this);
categoriesList.setGroupIndicator(null);
categoriesList.setChildIndicator(null);
categoriesList.setAdapter(mAdapter);
categoriesList.setOnChildClickListener(mAdapter);
return view;
}
public void onUpdate(Intent data) {
restartContentLoader();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LayoutUtils.showLoading(getView(), R.id.manage_market_list);
}
@Override
public Uri onCreateContentUri() {
Builder builder = MarketsContentProvider.MARKETS_GRID_URI.buildUpon();
return builder.build();
}
@Override
public void onCursorLoaded(final Uri uri, final Cursor cursor) {
if (!mIsDoneButtonClicked) {
if (cursor.getCount() > 0) {
mCursor = cursor;
showResults(uri);
Log.d("marketsstuff","i am at donebutton");
} else {
if (!isOperationExecuting()) {
showNoResults(uri);
}
}
}
}
@Override
public void onStart() {
super.onStart();
setupListeners();
}
@Override
public void onResume() {
final IntentFilter filter = new IntentFilter();
filter.addAction(BroadcastActions.MARKETS_DASHBOARD);
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void showResults(Uri uri) {
LayoutUtils.showResults(getView(), R.id.manage_market_list);
}
@Override
public void showNoResults(Uri uri) {
showResults(uri);
}
private void setupListeners() {
ManageDashboardMarketsActivity activity = (ManageDashboardMarketsActivity)getActivity();
activity.setDoneButtonEnabled(this, true);
}
@Override
public void onClick(final View view) {
ManageDashboardMarketsActivity activity = (ManageDashboardMarketsActivity) getActivity();
switch (view.getId()) {
case R.id.button_done:
activity.hideSoftKeyboard(getView());
break;
default:
break;
}
}
public void editList() {
ManageDashboardMarketsActivity activity = (ManageDashboardMarketsActivity)getActivity();
mIsDoneButtonClicked = true;
activity.setDoneButtonEnabled(this, false);
DashboardManageMarketsOperation operationvar = new DashboardManageMarketsOperation( MarketsContentProvider.MARKETS_GRID_URI);
operationvar.setIndex(iSelected);
RestService.start(getActivity(), operationvar);
Log.d("tester", "inside edit list");
}
@Override
public boolean setViewValue(View arg0, Cursor arg1, int arg2) {
// TODO Auto-generated method stub
return false;
}
解决方案
It should be easy. Create these 2 functions in the shared prefs:
public void savemarketsselectedindex(int selectedindex) {
mSharedPreferences.edit().putInt(PROPERTY_MARKETS_INDEX, selectedindex).apply();
Log.d("newsdash", "");
}
public int getmarketsselectedindex(){
return mSharedPreferences.getInt(PROPERTY_MARKETS_INDEX, 0);
}
call this in your class:
private int iSelected = SharedPreferencesManager.getInstance().getmarketsselectedindex();
and this inside public void selected:
SharedPreferencesManager.getInstance().savemarketsselectedindex(iSelected);
and that shold basically work.