首页 > 解决方案 > CardStackView 添加带有数据库信息的点

问题描述

对不起,如果这篇文章没有正确填写,但我会尽力做到最好。我正在尝试使用 android studio 创建一个 android 应用程序,我需要一个 TinderLike 滑动支架。

为此,我正在使用这个库:CardStackView

如果我使用默认代码填充图片,一切正常。

private List<TouristSpot> createTouristSpots() {
    List<TouristSpot> spots = new ArrayList<>();
    spots.add(new TouristSpot("Yasaka Shrine", "Kyoto", "https://source.unsplash.com/Xq1ntWruZQI/600x800"));
    spots.add(new TouristSpot("Fushimi Inari Shrine", "Kyoto", "https://source.unsplash.com/NYyCqdBOKwc/600x800"));
    spots.add(new TouristSpot("Bamboo Forest", "Kyoto", "https://source.unsplash.com/buF62ewDLcQ/600x800"));
    spots.add(new TouristSpot("Brooklyn Bridge", "New York", "https://source.unsplash.com/THozNzxEP3g/600x800"));
    spots.add(new TouristSpot("Empire State Building", "New York", "https://source.unsplash.com/USrZRcRS2Lw/600x800"));
    spots.add(new TouristSpot("The statue of Liberty", "New York", "https://source.unsplash.com/PeFk7fzxTdk/600x800"));
    spots.add(new TouristSpot("Louvre Museum", "Paris", "https://source.unsplash.com/LrMWHKqilUw/600x800"));
    spots.add(new TouristSpot("Eiffel Tower", "Paris", "https://source.unsplash.com/HN-5Z6AmxrM/600x800"));
    spots.add(new TouristSpot("Big Ben", "London", "https://source.unsplash.com/CdVAUADdqEc/600x800"));
    spots.add(new TouristSpot("Great Wall of China", "China", "https://source.unsplash.com/AWh9C-QjhE4/600x800"));
    return spots;
}

但是,当我尝试使用从数据库中检索信息的代码更改默认人口代码时,不再显示任何内容。

private List<TouristSpot> createTouristSpots() {
    final List<TouristSpot> spots = new ArrayList<>();

    String url = AppData.api + "radar_2.php";

    alerttext.setVisibility(View.VISIBLE);

    SharedPreferences token = getApplicationContext().getSharedPreferences(AppData.sp_user_info, 0);
    String user_id = token.getString(AppData.sp_user_id, "0");
    UserData userData=new AppData().getUserData();

    Map<String, String> params = new HashMap<String, String>();

    params.put("user_id", user_id);
    params.put("number", String.valueOf(n));
    params.put("gender", userData.getLooking_gender());
    params.put("looking_age_start",userData.getLooking_age_start());
    params.put("looking_age_end", userData.getLooking_age_end());
    params.put("latitude", userData.getLatitude());
    params.put("longitude", userData.getLongitude());
    params.put("distance", "100");

    CustomRequest jsObjRequest = new CustomRequest(Request.Method.POST, url, params, new Response.Listener<JSONObject>()
    {
        @Override
        public void onResponse(JSONObject response)
        {
            if (n == 1)
            {
                SharedPreferences.Editor editor = pref.edit();
                editor.putString("MATCHDATALIST", response.toString());
                editor.commit();
            }

            try
            {

                String str = response.getString("Error");

                if (str.equals("None"))
                {
                    JSONArray jsonArray = response.getJSONArray("Responsedata");
                    //Toast.makeText(getActivity(), jsonArray.toString(), Toast.LENGTH_LONG).show();

                    for (int i = 0; jsonArray.length() > i; i++)
                    {
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        spots.add(new TouristSpot(jsonObject.getString("user_id"),jsonObject.getString("username"),jsonObject.getString("hometown"),jsonObject.getString("age"),jsonObject.getString("gender"),jsonObject.getString("profile_image"),jsonObject.getString("interests"),jsonObject.getString("distance")));
                    }

                    alerttext.setVisibility(View.GONE);

                } else {
                    //Toast.makeText(getActivity(), response.getString("Error"), Toast.LENGTH_LONG).show();
                }
            } catch (JSONException e)
            {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener()
    {
        @Override
        public void onErrorResponse(VolleyError response)
        {
            //Toast.makeText(getActivity(), response.toString(), Toast.LENGTH_LONG).show();
        }
    });

    jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(15000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    AppController.getInstance().addToRequestQueue(jsObjRequest);

    //Toast.makeText(getActivity(), spots.toString(), Toast.LENGTH_LONG).show();

    return spots;
}

在我的 OnCreateView 中,我正在调用函数 reload();

private void reload() {
    cardStackView.setVisibility(View.GONE);
    adapter = createTouristSpotCardAdapter();
    cardStackView.setAdapter(adapter);
    cardStackView.setVisibility(View.VISIBLE);
}

private TouristSpotCardAdapter createTouristSpotCardAdapter() {
    final TouristSpotCardAdapter adapter = new TouristSpotCardAdapter(getApplicationContext());
    adapter.addAll(createTouristSpots());
    return adapter;
}

我确实检查了 JSONArray 到字符串,并且从数据库中检索到的所有信息都在其中。

PS:TouristSpot 适用于包含数据库中的所有变量。

如果有人能让我走上正确的道路,让它与从我的数据库中检索到的值一起工作,我会非常感激

真诚的,杰里米

标签: androiddatabase

解决方案


推荐阅读