如何拆分StringBuilder或并排打印

时间:2018-11-19 17:29:26

标签: java android

我正在Android Studio中开发一个应用,并尝试通过电子邮件或WhatsApp发送列表。这是一个包含产品和数量的列表,但必须并排,例如:

product1 - quantity1
product2 - quantity2
product3 - quantity3

我尝试了很多方法,但是我无法使其并行工作,而我得到的最接近的代码是我粘贴在此处的代码。它必须一次进入所有列表。我该怎么办??

 fabShare = findViewById(R.id.fabShare);
    fabShare.setOnClickListener(new View.OnClickListener( ) {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
            intent.setType("text/plain");
            StringBuilder sb = new StringBuilder();
            StringBuilder sb2 = new StringBuilder();

            for (int i = 0; i < listaCompras1.size(); i++){

                String p = listaCompras1.get(i);
                sb.append(p);

                String q = listaCompras2.get(i);
                sb2.append(q);


            }


            intent.putExtra(Intent.EXTRA_TEXT, sb.toString() + "\n" + sb2.toString());

            startActivity(Intent.createChooser(intent, "share via"));


        }
    });

2 个答案:

答案 0 :(得分:2)

您可以使用html,也可以直接插入新行。

StringBuilder sb = new StringBuilder();
for (int i = 0; i < listaCompras1.size(); i++){
    sb
      .append(listaCompras1.get(i))
      .append(" - ")
      .append(listaCompras2.get(i))
      .append("\n");
}

但是,与其存储并行的String列表,不如将其存储为单个List<Compra>

答案 1 :(得分:1)

尝试使用以下内容:

    StringJoiner joiner = new StringJoiner("\n");
    for (int i = 0; i < listaCompras1.size(); i++){ 
        String p = listaCompras1.get(i);
        String q = listaCompras2.get(i);
        joiner.add(p + " - " + q);
    }
    String result = joiner.toString();

StringBuilder的使用本来像

        sb.append(p).append(" - ").append(q).append("\n");

在循环中,但最后会导致额外的换行符。 StringJoiner避免了这种情况。

您现有的代码将产品和数量值附加到两个不同的构建器中。上面的语句将它们附加在一个构建器中并排放置。