2017-04-25 32 views
-1

我有一個問題:是否可以將應用程序從JSON數據中的互聯網獲取的非常長的文本分成文本的小部分?然後這些部分應該顯示在一個cardview中。將長TextView分成小部分並在這些部分周圍製作卡片視圖| Android

如果有可能,有人可以告訴我怎麼做?我嘗試了很長時間,並沒有得到它。感謝幫助!


編輯

這就是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

[Android中拼版文本](http://stackoverflow.com/questions/31837840/paginating-text-in-android/32096884#32096884) – Onik

回答

0

的一個嘗試是:

歇具有獨特的像,和一些文本部分,那麼你可以使用

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

您可以通過循環,並設置背景,你的願望的那些文字。

0

如果您向我提供樣本數據,您可以根據任何特殊字符或空格拆分文本,所以我可以給你適當的解決方案。

+0

我編輯的問題。然後你可以告訴我如何編碼這個 – android

+0

我編輯了這個問題。你能幫我嗎? – android

0

首先讓我說,我認爲必須有一個更好的方法來做你想做的事情,但是如果你想真正切割一個字符串以顯示不同的cardviews,另一種方法是剪切它基於固定數量的字符。

此功能將採取文字和固定的限制。它會返回一個數組。在第一個位置,它將有被刪除的文本,第二個位置是剩下的文本。

剪切部分可能落在一個詞的中間。如果你不想要,可以使用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; 
} 

直到第二位置是空字符串來獲取所有從最初的串子你可以調用這個函數在一個循環中考取的成績第二的位置作爲函數的第一個參數。

+0

謝謝,但是你知道在cardviews中構建子字符串後,我可以如何放置這些小零件? – android