将长文本视图分成小部分,并围绕这些部分制作卡片视图Android的

时间:2017-04-25 11:08:47

标签: android divide cardview

我有一个问题:是否有可能将应用程序从Json数据中获取的非常长的文本划分为文本的一小部分?然后这些部分应该显示在单个cardview中。

如果有可能,有人可以告诉我怎么样?我试了很长时间但没有得到它。谢谢你的帮助!

修改

这是jsonRequest,它构建了TextView。

    jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, "http://example.com/document.json",
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {

                    try {
                        JSONArray jsonArray = response.getJSONArray("data1");

                        for (int i = 0; i < jsonArray.length(); i++) {

                            JSONObject obj = jsonArray.getJSONObject(i);

                            String a = obj.getString("a");
                            String b = obj.getString("b");
                            String c = obj.getString("c");
                            String d = obj.getString("d");

                            textView.append(Html.fromHtml("<p><b>" + a + "</b><br>" + b + "<br>" + c + "<br>" + d + "</p>"));
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },

            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("VOLLEY", error.toString());
                }
            }


    );

    requestQueue.add(jsonObjectRequest);

    ;

现在TextView应该分成几个小部分。每个部分都应该是字符串a,b,c和d。这些小零件周围应该是一张卡片。

3 个答案:

答案 0 :(得分:0)

一次尝试将是:

使用,之类的独特内容打破文本部分,然后使用

StringTokenizer tokens = new StringTokenizer(comma_string_here, ",");
String first_text = tokens.nextToken();
String second_text = tokens.nextToken();

您可以根据需要循环浏览并设置背景。

答案 1 :(得分:0)

如果您提供样本数据,您可以根据任何特殊字符或空格分割文本,因此我可以为您提供适当的解决方案。

答案 2 :(得分:0)

首先让我说我认为必须有一个更好的方法来做你想做的事情,但是如果你想真正剪切一个字符串以显示不同的卡片视图,另一种方法是将其剪切为基础在固定数量的字符上。

此功能将采用文本和固定限制。它将返回一个数组。在第一个位置,它将具有已被剪切的thext,在第二个位置具有剩余的文本。

剪切部分可能落在单词的中间。如果您不想要,可以使用rtn[0].lastIndexOf(" ")添加更多逻辑来搜索最后一个空格并相应地调整结果。

public static String[] limitToNChars(String text, int limit){
    String rtn[] = new String[2];
    if(text.length() <= limit){
        rtn[0] = text;
        rtn[1] = "";
    }else{
        rtn[0] = text.substring(0,limit);
        rtn[1] = text.substring(limit);
    }
    return rtn;
}

您可以在循环中调用此函数,将结果的第二个位置作为函数的第一个参数,直到第二个位置为空字符串,以从初始字符串中获取所有子字符串。