我的问题是奇娜很奇怪。我正在制作一个应用程序,用于在学校中找到不同的房间。我想在ArrayList中保存最近的五个搜索并相应地显示它们。
发生的事情是我的ArrayList应该添加对ArrayList的最新搜索。但它一直在做的是将最新的搜索添加到所有具有值的位置。
This is how is looks but is not how I want it, obviously!
这是添加搜索的方法。
public void addPreviousSearch(String[] searchInput, int[] dotPosition) {
String mapDir = searchInput[0] + ":" + searchInput[2] + ".png";
Search temp = new Search(searchInput, dotPosition, mapDir);
Log.d("PREV", mapDir + " " + searchInput[2]);
previousSearchList.add(0,temp);
for (Search s : previousSearchList) {
Log.d("PREV", s.getSearchQuery());
}
if (previousSearchList.size() > 5) {
Log.d("EVAL", previousSearchList.remove(5).toString());
}
}
这是ArrayList包含的类。
public class Search {
private String[] search;
private int[] dotPosition;
private String mapDicrectory;
public Search(String[] search, int[] dotPosition,String mapDirectory) {
this.search = search;
this.dotPosition = dotPosition;
this.mapDicrectory = mapDirectory;
}
public String[] getSearch() {
return search;
}
public int[] getDotPosition() {
return dotPosition;
}
public String getMapDirectory() {
return mapDicrectory;
}
/**
* Returns a string formated to display the seach
* @return String with suitable format
*/
public String getSearchQuery(){
if(search!=null)
return search[0] + ":" + search[1] + search[2] + search[3];
else
return " ";
}
我很感激任何意见!
干杯!
更新:为了澄清,ArrayList第一次显示正确的数字,其余四个是空白。在第二次搜索时,ArrayList显示正确的数字,但将之前的数字更改为与新的数字相同。
更新II:通过在每次搜索时创建一个新的String []来实现它!