0

下面是我从我的 Web 服务填充 ListView 的代码。

  1. 如何从 cookie 中设置和获取此 ListView?(我的代码上有一个例子)
  2. 假设我有一个按钮可以刷新此列表,如何处理?
  3. 如果用户连接到互联网如何处理?

我基本上想知道如何管理从 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() {

    }
}
4

1 回答 1

0

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

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

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

检查 Internet 连接是否可用?

假设我有一个按钮可以刷新此列表,如何处理?

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

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

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

添加

循环遍历 List 的最简单方法是使用内置迭代器:

for(Cookie cookie : cookieList) {
    if(cookie.getAttribute("college_username").equals("Brown")) {
        // check more attributes or do something
    }
}
于 2012-05-24T18:01:39.743 回答