2017-02-13 108 views
0

我在我的RecyclerView中有一個句子,其中有3個TextView。圖爲象下面這樣:在TextView Android中添加另一個字

enter image description here

在那張照片,我有一句話在3 TextView,有「1」「HOT,更辣椒」和「比薩」。這是我的RecyclerView綁定代碼:

try { 
    view.txtArticlesName.setText(/*orderList.getJSONObject(position).getString("quantityValue") +*/ 
          /*orderList.getJSONObject(position).getString("spesial-request").replaceAll("[\\\"\\[\\]]", "") + */ 
            orderList.getJSONObject(position).getString("bezeich")); 
    view.txtQty.setText(orderList.getJSONObject(position).getString("quantityValue")); 
    view.txtReqList.setText(orderList.getJSONObject(position).getString("spesial-request").replaceAll("[\\\"\\[\\]]", "")); 

    } catch (JSONException e) { 
        e.printStackTrace(); 
    } 

我想參加所有的TextView只有一個「TextView`動態地。我會嘗試這個辦法:

view.txtArticlesName.setText(/*orderList.getJSONObject(position).getString("quantityValue") +*/ 
          /*orderList.getJSONObject(position).getString("spesial-request").replaceAll("[\\\"\\[\\]]", "") + */ 
            orderList.getJSONObject(position).getString("bezeich")); 

但它不能正常工作,它不是將數據綁定,所以TextView只顯示默認的文本「Hello World」。 TextView可以做到這一點嗎?我也讀了Spannable,但我不知道它的工作如何在一個TextView中添加新詞。或者有另一種方法可以做到這一點?任何建議和答案將有助於我。以前感謝。

+1

也許你有例外。並且此代碼從不執行。只是看到日誌貓或使用日誌,以確保所有此代碼執行 –

+0

@farazkhonsari我的日誌沒有顯示任何錯誤。當我點擊比薩或其他食物從另一個RecyclerView itss成功廣告到這個RecyclerView,但TextView只顯示「Hello World」 –

回答

0

我解決了這個有一點點失望。在這裏我的最終代碼:

try { 
    view.txtArticlesName.setText(orderList.getJSONObject(position).getString("quantityValue") + " " + 
     orderList.getJSONObject(position).optString("spesial-request").replaceAll("[\\\"\\[\\]]", "") + " " + 
     orderList.getJSONObject(position).getString("bezeich")); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

用的getString:

with getString

與optString:

with optString

我改變getStringoptString和運營商+現在的工作。我不完全承認爲什麼getString不起作用,但optString工作。

非常感謝您對所有anwser,從+1我

1

在您的TextView中簡單地連接字符串。

String string1 = "Hello", string2 = "HOT CHILLI", string3 = "PIZZA"; 

TextView textView = (TextView) findViewById(R.id.your_textView); 
textView.setText(string1.concat(string2).concat(string3)); 

或者您也可以將它附加到現有的TextView文本中。

textView.setText(textView.getText().toString.concat(string2)); 

編輯:

從字符串變量服務器收集的數據,然後這些變量傳遞給TextView的。

String string1, string2, string3; 


try { 
    string1 = orderList.getJSONObject(position).getString("quantityValue"); 
    string2 = orderList.getJSONObject(position).getString("spesial-request").replaceAll("[\\\"\\[\\]]", ""); 
    string3 = orderList.getJSONObject(position).getString("bezeich")); 
    String final = string1.concat(string2).concat(string3); 
    view.txtView.setText(final); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 
+0

它不工作,我'TextView'不綁定從我的服務器的數據 –

+0

@MarioMargoPradipta檢查我的編輯。 – Rachit

+0

感謝您的回答,如果我們仍然使用'getString',我認爲它不起作用。我在下面發表我的答案。再次感謝 –

1

使用'+'運營商或StringBuilder加入2個或更多字符串和結果字符串設定成一個單一的TextView。

如果你想有不同的字體,顏色,大小,粗體等文本的某些部分,可以使用Spannable字符串或Html.fromHtml()

+0

+運營商它不適合我,我不知道爲什麼。我會嘗試你的關於String Builder的建議 –

1

可以製造和使用spannable字符串象下面這樣:

private void addSpannableString(){ 

     //"1" "HOT, MORE CHILLI" and "Pizza" 
     String one= "1"; 
     String two= "HOT, MORE CHILLI"; 
     String three= "Pizza"; 
     String mergeString= one + two + three; 
     Spannable spannable = new SpannableString(mergeString); 
     StyleSpan boldSpan = new StyleSpan(Typeface.BOLD); 
     spannable.setSpan(boldSpan, mergeString.indexOf(two), mergeString.indexOf(three), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
     textview.setText(mergeString); 
    } 

有很多方法可以使Spans包括顏色和字體

1

使用TextView.append(CharSequence text)向其添加更多文本。

追加指定的文本TextView的的顯示緩衝區,升級 它BufferType.EDITABLE如果不是已經編輯


1

GetStringOptString之間的區別是:

Documentation

OptString返回空字符串( 「」),如果您指定的密鑰不存在 。另一方面,GetString拋出一個JSONException。

使用getString如果它是一個錯誤的數據丟失,或者optString如果你不知道它會在那裏。

+0

@Mario Margo Pradipta檢查解釋.. – rafsanahmad007

+0

如果那樣,爲什麼我們不總是使用'optString'? –

+0

當數據有必要顯示..應該使用Getstring ..它也有助於調試..如果JOSN中缺少任何值 – rafsanahmad007

相關問題