ListView cookie问题

时间:2012-05-24 17:14:58

标签: android caching cookies android-listview

以下是从我的网络服务填充ListView的代码。

  1. 如何从Cookie设置和获取此ListView? (我的代码上有一个例子)
  2. 我们说我有一个按钮会刷新此列表,如何处理它?<​​/ li>
  3. 如果用户连接到互联网,如何处理?
  4. 我基本上想知道如何管理从WebService填充的ListView。

    public class EventsActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.dashboard);
    
            RequestParams params = new RequestParams();
            params.put("user_id", "1");
    
            BloompItClient.get("get_events", params, new AsyncHttpResponseHandler() {
                @Override
                public void onStart() {
    
                }
    
                @Override
                public void onSuccess(String response) {                
                    JSONObject jsonResponse;
                    try {
                        jsonResponse = new JSONObject(response);
    
                        try {
                            String state = jsonResponse.getString("state");
    
                            if (state.equals("1")) {
                                ArrayList<HashMap<String, String>> eventsList = new ArrayList<HashMap<String, String>>();
                                JSONArray events = jsonResponse.getJSONArray("events");
    
                                for (int i = 0; i < events.length(); i++) {
                                    JSONObject currentEvent = events.getJSONObject(i);
                                    HashMap<String, String> eventMap = new HashMap<String, String>();
    
                                    eventMap.put("college", currentEvent.getString("college_username"));
                                    eventMap.put("author", currentEvent.getString("user_username"));
                                    eventMap.put("title", currentEvent.getString("title"));                                                     
                                    eventMap.put("date", currentEvent.getString("date"));
    
                                    eventsList.add(eventMap);
                                }
    
                                ListView eventsListView = (ListView) findViewById(R.id.events);
                                EventsListAdapter eventsListAdapter = new EventsListAdapter(getApplicationContext(), eventsList);
    
                                // testing cookies
    
                                AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
    
                                PersistentCookieStore persistentCookieStore = new PersistentCookieStore(getApplicationContext());
                                asyncHttpClient.setCookieStore(persistentCookieStore);
    
                                BasicClientCookie baseClientCookie = new BasicClientCookie("cookiesare", "awesome");
                                baseClientCookie.setVersion(1);
                                baseClientCookie.setDomain("it.bloomp");
                                baseClientCookie.setPath("/");
                                persistentCookieStore.addCookie(baseClientCookie);
    
                                List<Cookie> cookieList = persistentCookieStore.getCookies();
    
                                for (int i = 0; i < cookieList.size(); i++) {
                                    System.out.println(cookieList.toString());
                                }
    
                                // testing cookies end
    
                                eventsListView.setAdapter(eventsListAdapter);
                            } else {
    
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    } catch (JSONException e1) {
                        e1.printStackTrace();
                    }
                }
    
                @Override
                public void onFailure(Throwable e) {
    
                }
    
                @Override
                public void onFinish() {
    
                }
            });
        }
    
        public void getEvents() {
    
        }
    }
    

1 个答案:

答案 0 :(得分:0)

我会反过来回答你的问题。

  

如果用户连接到互联网,如何处理?

如果这不是本地保存的数据,那么没有互联网连接就没有什么可以做的。您可以提示用户是否要激活WiFi或数据连接(如果它们都没有激活)。

Check Whether Internet Connection is available or not?

  

假设我有一个按钮会刷新此列表,如何处理它?<​​/ p>

如果在本地存储数据是有意义的,那么只需在适配器上调用notifyDataSetChanged()即可。否则,请重新查询服务器并检查新的或修改的条目。

  

如何从Cookie中设置和获取此ListView?

假设您的示例有效,因为您没有发布任何logcat错误,所以将数据移入和移出cookie非常简单;使用setAttribute()和getAttribute()。实际上,您可以使用任何形式的数据存储:SQLite数据库,文本文件等,以处理您通过JSONArray收集和解析的信息。

<强>加成

循环列表的最简单方法是使用内置迭代器:

for(Cookie cookie : cookieList) {
    if(cookie.getAttribute("college_username").equals("Brown")) {
        // check more attributes or do something
    }
}