2017-06-12 195 views
0

我有我想在TextView中顯示的整數列表(使用RecyclerView)。問題是每次我的整數都被最後一個元素覆蓋。我在ViewHolder的bind方法內調用這個方法。 是否有可能使用setText而不是append並將每個整數寫入textview?ArrayList只顯示最後一個元素

public void showRankings(){ 
     Integer[] rankingsArray = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; 
     List<Integer> rankings = Arrays.asList(rankingsArray); 


     for (Integer i : rankings){ 
      rankingsTxt.setText("#" + Integer.toString(i)); 
     } 
    } 

完全ViewHolder:

public class TvHolder extends ButterKnifeVH { 
    @Bind(R.id.trade_btn) AutoResizeTextView tradeBtn; 
    @Bind(R.id.gain_lose) public AutoResizeTextView gainTxt; 
    @Bind(R.id.symbolName) public AutoResizeTextView symbolName; 
    @Bind(R.id.parent) ConstraintLayout constraintLayout; 
    @Bind(R.id.ranking) AutoResizeTextView rankingsTxt; 

    @BindString(R.string.percent_string) String strPercent; 

    private FragmentActivity fragmentActivity; 
    private TopsFlopsView topsFlopsView; 
    private TopsFlopsSymbolEntity topsEntity; 


    public TvHolder(ViewGroup parent, int layoutId 
     ,FragmentActivity fragmentActivity,TopsFlopsView topsFlopsView) { 
    super(parent, layoutId); 
    this.topsFlopsView = topsFlopsView; 
    this.fragmentActivity = fragmentActivity; 
    } 
    public void bind(TopsFlopsSymbolEntity topsEntity){ 
    symbolName.setText(topsEntity.getSymbol()); 
    showRankings(); 
    } 


     public void showRankings(){ 
      Integer[] rankingsArray = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; 
      List<Integer> rankings = Arrays.asList(rankingsArray); 


      for (Integer i : rankings){ 
       rankingsTxt.setText("#" + Integer.toString(i)); 
      } 
     } 

    } 


} 

下面是適配器的主要部分,其做工精細

public class TopsAdapter 
    extends RealmRecyclerViewAdapter<TopsFlopsSymbolEntity, RecyclerView.ViewHolder> { 

    private FragmentActivity context; 
    private TopsFlopsView view; 

    public TopsAdapter(Realm realm) { 
    super(realm); 
    } 

    @Override 
    public void onBindRealmViewHolder(RecyclerView.ViewHolder holder, TopsFlopsSymbolEntity tops) { 
    if(holder instanceof TopsViewHolder){{ 
     ((TopsViewHolder) holder).bind(tops); 
    }} 
    } 

    @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    return new TopsViewHolder(parent, R.layout.tops_flops_item, context, view); 
    } 
+2

提供給我們怎麼樣,你寫你的適配器 –

+0

此代碼將始終設置'rankingsTxt'的'text'場排名最後的值的完整代碼。提供你的整個代碼 –

+0

嘗試'rankingsTxt.setText(rankingsTxt.getText()+「#」+ Integer.toString(i));' –

回答

0

試試下面的代碼片段 -

... 
... 
String textToDisplay = ""; 
for (Integer i : rankings){ 
    textToDisplay = textToDisplay + " #" + Integer.toString(i); 
} 

rankingsTxt.setText(textToDisplay); 
... 
+0

現在正在顯示#1#2,仍然不起作用 – Xample

0

你必須創建一個你想要的字符串展開到視圖中或從rankingsTxt獲取以前的值,然後將新值與以前的值相加,如rankingsTxt.getTest()+ new value並再次設置它。

0

這可能對你有幫助。

public void showRankings() { 
    Integer[] rankingsArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; 
    List<Integer> rankings = Arrays.asList(rankingsArray); 

    String str = ""; 
    for (Integer i : rankings) { 
     str = str + "#" + Integer.toString(i); 
    } 
    rankingsTxt.setText(str); 
} 
+0

現在正在顯示#1#2#3,仍然不能正常工作 – Xample

+0

用活動和回收視圖的java和xml代碼編輯您的問題 –

+0

@Xample did you try adding「 \ n「每個號碼後? –

相關問題