【问题标题】:How to display multiline from array list in single TextView?如何在单个 TextView 中显示数组列表中的多行?
【发布时间】:2019-12-30 00:58:54
【问题描述】:

我正在开发 android 应用程序,因此我想在单个文本视图中显示四行文本。 我的数组列表包含如下数据

客户名称:Nilesh
客户联络:23230200
客户城市:浦那

但是当我编写如下代码时,仅从数组列表中显示了最后一行

XML

  <TextView android:id="@+id/kbpViewTvCustNm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="4dp"
            android:layout_marginLeft="8dp"
            android:lines="4"
            android:textIsSelectable="false" />

代码

for (String details : list2)
  {
     custName.setText(details);
  }

【问题讨论】:

    标签: android textview


    【解决方案1】:

    使用 StringBuilder 将数组设为 1 个字符串,并在各个字符串之间添加换行符,如下所示:

    StringBuilder builder = new StringBuilder();
    for (String details : list2) {
       builder.append(details + "\n");
    }
    
    custName.setText(builder.toString());
    

    【讨论】:

    • 这对我来说似乎是最好的解决方案,StringBuilder 在附加文本方面比 String 要好。
    【解决方案2】:
    <TextView
                android:id="@+id/kbpViewTvCustNm"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_marginBottom="4dp"
                android:layout_marginLeft="8dp"
                android:lines="4"
                android:textIsSelectable="false" />
    

    【讨论】:

      【解决方案3】:

      将您的 layout_widthwrap_content 更改为特定大小,如下所示:

      <TextView
                  android:id="@+id/kbpViewTvCustNm"
                  android:layout_width="80dp"
                  android:layout_height="wrap_content"
                  android:layout_marginBottom="4dp"
                  android:layout_marginLeft="8dp"
                  android:lines="4"
                  android:textIsSelectable="false" />
      

      【讨论】:

        【解决方案4】:

        您好,您可以在文本视图中设置最大行数

          <TextView
        android:id="@+id/address1"
        android:gravity="left"
        android:layout_height="fill_parent"
        android:layout_width="wrap_content"
        android:maxLines="4"
        android:lines="4"
        android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod   tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."></TextView>
        

        【讨论】:

          【解决方案5】:

          您可以将您的详细信息组合为一个字符串并用换行符分隔:

          String text="";
          for (String details : list2) {
              text = text + details + "\n";
          }
          custName.setText(details);
          

          【讨论】:

            【解决方案6】:
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main3);
                Bundle bundle = getIntent().getExtras();
                assert bundle != null;
                ArrayList<String> expTit = bundle.getStringArrayList("expTit");
                ArrayList<Integer> expAmt =bundle.getIntegerArrayList("expAmt");
                TextView t= findViewById(R.id.textView2);
                TextView t2= findViewById(R.id.textView3);
                StringBuilder builder = new StringBuilder();
                if (expTit == null) throw new AssertionError();
                String text="";
                for (String details : expTit) {
                    text = text + details + "\n";
                }
                t.setText(text);
            }
            

            【讨论】:

            • 它的应用程序崩溃了我能知道为什么吗??
            • 用StringBuilder代替String看区别请参考这个link.
            【解决方案7】:

            整个 pojo 字段的简单解决方案:

            for (Post post : posts) {
             String content = "";
             content += "ID: " + post.getId() + "\n";
             content += "User ID: " + post.getUserId() + "\n";
             content += "Title: " + post.getTitle() + "\n";
             content += "Text: " + post.getText() + "\n\n";
            
             textViewResult.append(content);         
              }
             }
            

            对于科特林:

               posts.forEach {post->
                    var content = ""
                    content += "ID: " +  post.id + "\n"
                    content += "User ID: " + post.userId + "\n"
                    content += "Title: " + post.title + "\n"
                    content += "Text: " + post.text + "\n\n"
                  textViewResult.append(content)
                }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-12-14
              • 2014-02-09
              • 2017-06-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多