package in.srain.cube.demo.ui.localcache; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import in.srain.cube.cache.CacheManager; import in.srain.cube.cache.CacheManagerFactory; import in.srain.cube.cache.Query; import in.srain.cube.cache.QueryJsonHandler; import in.srain.cube.concurrent.SimpleExecutor; import in.srain.cube.demo.R; import in.srain.cube.demo.ui.views.TitleAndValue; import in.srain.cube.mints.base.TitleBaseFragment; import in.srain.cube.request.JsonData; import in.srain.cube.util.CLog; public class LocalCacheFragment extends TitleBaseFragment { private TitleAndValue mUid; private TitleAndValue mName; private static String KEY_FOR_USER_CACHE = "user"; private LinearLayout mList; @Override protected View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHeaderTitle(R.string.cube_demo_local_cache); View view = inflater.inflate(R.layout.fragment_form_local_cache, null); mList = (LinearLayout) view.findViewById(R.id.form_base_form_list); mUid = addTitleAndValue("uid:"); mName = addTitleAndValue("name:"); TextView readCacheTextView = (TextView) view.findViewById(R.id.local_cache_read_cache); readCacheTextView.setText(R.string.cube_demo_local_cache_read_cache); readCacheTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { readFromCache(); } }); TextView setCacheTextView = (TextView) view.findViewById(R.id.local_cache_set_cache); setCacheTextView.setText(R.string.cube_demo_local_cache_set_cache); setCacheTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { setToCache(); } }); return view; } private void setToCache() { final JsonData jsonData = JsonData.newMap(); jsonData.put("uid", mUid.getValue()); jsonData.put("name", mName.getValue()); CacheManager cacheManager = CacheManagerFactory.getDefault(); cacheManager.setCacheData(KEY_FOR_USER_CACHE, jsonData.toString()); Toast.makeText(getActivity(), "Set cache successfully.", Toast.LENGTH_SHORT).show(); } private TitleAndValue addTitleAndValue(String title) { TitleAndValue tv = new TitleAndValue(getContext()); tv.title(title); mList.addView(tv); return tv; } private void readFromCache() { Query<JsonData> query = new Query<JsonData>(CacheManagerFactory.getDefault()); query.setCacheTime(86400 * 10); QueryJsonHandler queryJsonHandler = new QueryJsonHandler() { @Override public void onQueryFinish(Query.RequestType requestType, JsonData cacheData, boolean outOfDate) { CLog.d("test", "onQueryFinish: %s %s %s", requestType, cacheData, outOfDate); if (cacheData != null) { mUid.value(cacheData.optString("uid")); mName.value(cacheData.optString("name")); } else { Toast.makeText(getActivity(), "No cache is avariable, set first.", 0).show(); } } @Override public String createDataForCache(Query<JsonData> query) { CLog.d("test", "onNoCacheData"); return null; } }; query.setHandler(queryJsonHandler); query.setCacheKey(KEY_FOR_USER_CACHE); query.query(); } }