Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据以前是否打印过相同的值来确定是否打印数组列表中的数据_Java_Android_Arrays_Arraylist - Fatal编程技术网

Java 如何根据以前是否打印过相同的值来确定是否打印数组列表中的数据

Java 如何根据以前是否打印过相同的值来确定是否打印数组列表中的数据,java,android,arrays,arraylist,Java,Android,Arrays,Arraylist,我已经寻找了一段时间,并在这方面的工作,但我只是不知道最好的方式做这件事。 所以在我的android应用程序中,我有两个arraylist。一个保存日期,另一个保存当天购买的物品。我想做的是将其打印到文本视图中显示。 我想用一个字符串来保存当前日期,看看它是否等于前一个日期。如果有,则不打印,只打印“”及其旁边的项目。该列表基于时间而非日期。因此,在某些情况下,日期数组列表彼此相同。所以我希望它是这样的 2016/12/1 Item1 Item2 I

我已经寻找了一段时间,并在这方面的工作,但我只是不知道最好的方式做这件事。 所以在我的android应用程序中,我有两个arraylist。一个保存日期,另一个保存当天购买的物品。我想做的是将其打印到文本视图中显示。 我想用一个字符串来保存当前日期,看看它是否等于前一个日期。如果有,则不打印,只打印“”及其旁边的项目。该列表基于时间而非日期。因此,在某些情况下,日期数组列表彼此相同。所以我希望它是这样的

2016/12/1  Item1
           Item2
           Item3
2016/01/3  Item1
           Item2
2016/02/25 Item1
2016/12/1  Item1
2016/12/1  Item2
2016/12/1  Item3
2016/01/3  Item1
2016/01/3  Item2
2016/02/25 Item1
但现在是这样的

2016/12/1  Item1
           Item2
           Item3
2016/01/3  Item1
           Item2
2016/02/25 Item1
2016/12/1  Item1
2016/12/1  Item2
2016/12/1  Item3
2016/01/3  Item1
2016/01/3  Item2
2016/02/25 Item1
这就是我到目前为止所做的:

public class MainActivity extends AppCompatActivity {

ArrayList<String> myDates = new ArrayList<String>();
ArrayList<String> myProducsts = new ArrayList<String>();

TextView dates, products;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    dates = (TextView)findViewById(R.id.dates);
    products = (TextView)findViewById(R.id.products);

    //for total of 5 orders
    myPurchase first, second, thrid, fourth, fifth;

    myDates.add("2016/3/30:");
    myDates.add("2016/3/30:");
    myDates.add("2016/3/30:");
    myDates.add("2016/3/30:");
    myDates.add("2016/3/30:");
    myDates.add("2016/4/8:");
    myDates.add("2016/4/8:");

    myProducsts.add("Item1");
    myProducsts.add("Item2");
    myProducsts.add("Item3");
    myProducsts.add("Item4");
    myProducsts.add("Item5");
    myProducsts.add("Item6");
    myProducsts.add("Item7");

    for(int i = 0; i < myDates.size(); i++)
    {
        String next = myDates.get(i);
        String nextPro = myProducsts.get(i) + "\n";
        dates.append(next + nextPro);
    }



}
public类MainActivity扩展了AppCompatActivity{
ArrayList myDates=新建ArrayList();
ArrayList myProducsts=新的ArrayList();
文本查看日期、产品;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dates=(TextView)findViewById(R.id.dates);
products=(TextView)findViewById(R.id.products);
//总共5个订单
我的第一次购买,第二次购买,第三次购买,第四次购买,第五次购买;
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/3/30:”);
myDates.添加(“2016/4/8:”);
myDates.添加(“2016/4/8:”);
myProducsts.添加(“第1项”);
myProducsts.添加(“第2项”);
myProducsts.添加(“第3项”);
myProducsts.添加(“第4项”);
myProducsts.添加(“第5项”);
myProducsts.添加(“第6项”);
myProducsts.添加(“第7项”);
对于(int i=0;i

感谢您的帮助。

您可以将for循环逻辑更改为以下内容

String currentDate = "";
for(int i = 0; i < myDates.size(); i++)
{
    String next = myDates.get(i);
    String nextPro = myProducsts.get(i) + "\n";
    if (currentDate.equals(next)) {
        dates.append(nextPro);
    } else {
        dates.append(next + nextPro);
        currentDate = next;
    }
}
String currentDate=“”;
对于(int i=0;i

您必须处理一些字符串格式,才能获得想要的输出。

差不多。
currentDate
应该以
null
开头。请参阅我建议的编辑。噢,很好。(实际上它应该以空字符串开头,以避免空指针:))事实上,我会反转等于检查。假设next是非空的,请检查
next.equals(currentDate)
而不是
currentDate.equals(next)
…现在,没有NPE。是的,任何一种方法都很好。谢谢你们,工作得很好。我只是不知道如何处理检查,看看它是否打印出来。再次感谢你们