큰 문제가 있습니다. FileRelationship이라는 클래스가 있는데, 두 개의 생성자가 있습니다. 클래스는 아래와 같습니다. 나는 또한이 클래스에서 equals 메소드를 오버라이드했다. 이제안드로이드 검색 하나의 매개 변수에 대한 객체의 ArrayList 객체의 색인을 반환합니다.
public class FileRelationship {
String fileName;
String firstLink;
String secondLink;
String thirdLink;
public FileRelationship(String fileName) {
this.fileName = fileName;
}
public FileRelationship(String fileName, String firstLink, String secondLink, String thirdLink) {
this.fileName = fileName;
this.firstLink = firstLink;
this.secondLink = secondLink;
this.thirdLink = thirdLink;
}
public boolean equals(Object o) {
if(o == null) {
return false;
}
if(this == o) {
return true;
}
if(o instanceof FileRelationship) {
return this.fileName.equals(((FileRelationship)o).fileName);
}
return false;
}
}
나는 FileRelationships의 ArrayList를이 나는이 모두가 (4 개 문자열로 생성자를 사용하여 (이 목록을 검색 할 수있는 파일 이름, firstLink, secondLink, thirdLink)) 이제이 arrayList를 검색해야하는 다른 클래스의 메서드가 있는데이 메서드는 fileName이 일치하는 인덱스를 찾습니다. 이 메서드를 호출하면 fileName을 사용하여 생성자에 전달하는 것으로 끝납니다. (이것은 내가 할 수있는 유일한 방법이며 다른 문자열은 알 수 없다).
이것은 FileRelationships의 ArrayList를 설정하는 방법입니다.
fileRelationships = new ArrayList<FileRelationship>();
String MasterLine;
InputStream inputStream = this.getResources().openRawResource(R.raw.masterfile);
InputStreamReader inputreader = new InputStreamReader(inputStream);
BufferedReader buffreader = new BufferedReader(inputreader);
// Creates the arrayList of all the relationships for later use of retreival.
try {
while ((MasterLine = buffreader.readLine()) != null) {
MasterLineArray = MasterLine.split(",");
String filename = MasterLineArray[0];
String choice1 = MasterLineArray[1];
String choice2 = MasterLineArray[2];
String choice3 = MasterLineArray[3];
FileRelationship fr = new FileRelationship(filename, choice1, choice2, choice3);
fileRelationships.add(fr);
}
} catch (IOException e) {
} finally {
closeQuietly(buffreader);
}
이것은 관계를 찾고 필요한 변수로 설정하는 나의 방법입니다. 목록의 색인을 찾아 변수에 적용 할 수 있기를 원합니다.
public void findRelationship(String nextFileName) {
int pageIndex = fileRelationships.indexOf((new FileRelationship(nextFileName)));
selectedRelationship = fileRelationships.get(pageIndex);
currentPage = pageIndex;
}
편집 : 죄송합니다. 무엇이 잘못 되었습니까? 아니, 작동하지 않습니다. pageIndex는 -1을 반환합니다 (즉, 아무것도 찾지 못했습니다). 그 밖의 무엇을해야할지 모르겠다. 어쩌면 HashCode를 사용할 수도있다. 솔직히 나는 그것에 관해서도 살펴 보았고, 나는 그것을 사용하는 방법을 정말로 알 수 없다.
학교 프로젝트가 곧 끝나기 때문에 정말 도움이 필요합니다. 이 프로젝트가 끝나면 거의 완료해야합니다. 감사. 이
public void findRelationship(String nextFileName) {
for(FileRelationship file:fileRelationships)
{
if(file.firsFileName.equals(nextFileName))
{
currentPage=fileRelationships.indexOf(file);
}
}
}
목록 같은
이 코드의 문제는 무엇인가되지 않은 각 필드에 접근 FileRelationship 클래스의 각 필드에 대한 게터 세터 방법을? 그것은 작동하지 않습니까? – Eran
나는 당신이 어떤 수정을하고 싶지 않다면리스트를 검색하거나 단지 foreach 루프를 사용하기 위해 Iterator를 사용해야한다고 생각한다. 귀하의 경우 pageIndex 값이 -1이라고 생각합니다. 내가 맞습니까? – FaisalAhmed
FileRelationship (String, String, String String)과 FileRelationship (String)을 비교하려고했기 때문에 그렇게해야만한다고 생각했습니다. 예, 내 pageIndex는 -1이며 이것이 문제입니다. 색인을 반환하는 데 도움이 될까요? –