我有一个问题:是否有可能将应用程序从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。这些小零件周围应该是一张卡片。
答案 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;
}
您可以在循环中调用此函数,将结果的第二个位置作为函数的第一个参数,直到第二个位置为空字符串,以从初始字符串中获取所有子字符串。