우리의 GWT 응용 프로그램은, model
이 models
의 하위 집합입니다예방 또는 ValueListBox
records.setValue(model);
records.setAcceptableValues(models);
을 ValueListBox
사용합니다. 내가 겪고있는 문제는 ValueListBox에 중복 된 값이 포함되어 있다는 것입니다. 어떻게 예방하거나 제거합니까?
우리의 GWT 응용 프로그램은, model
이 models
의 하위 집합입니다예방 또는 ValueListBox
records.setValue(model);
records.setAcceptableValues(models);
을 ValueListBox
사용합니다. 내가 겪고있는 문제는 ValueListBox에 중복 된 값이 포함되어 있다는 것입니다. 어떻게 예방하거나 제거합니까?
재정 setAcceptableValues
방법
@Override
public void setAcceptableValues(Collection<T> newValues) {
super.setAcceptableValues(new HashSet<T>(newValues));
}
샘플 코드 : 마지막 코멘트 당으로
ValueListBox<Integer> semester = new ValueListBox<Integer>(new Renderer<Integer>() {
public String render(Integer object) {
String s = "";
if (object != null) {
s = object.toString();
}
return s;
}
public void render(Integer object, Appendable appendable) throws IOException {
String s = render(object);
appendable.append(s);
}
}) {
@Override
public void setAcceptableValues(Collection<Integer> newValues) {
super.setAcceptableValues(new HashSet<Integer>(newValues));
}
};
semester.setAcceptableValues(Arrays.asList(1, 1, 3, 3, 2, 2, 3, 4, 5, 7, 8, 9, 1, 3, 2));
semester.setValue(2);
--EDIT--
이 하나
시도class MyModel {
private String id;
private String name;
public MyModel(String id, String name) {
this.id = id;
this.name = name;
}
public String getName() {
return name;
}
@Override
public int hashCode() {
return this.id.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof MyModel) {
return this.id.equals(((MyModel) obj).id);
}
return false;
}
}
ValueListBox<MyModel> semester = new ValueListBox<MyModel>(new Renderer<MyModel>() {
public String render(MyModel object) {
String s = "";
if (object != null) {
s = object.getName();
}
return s;
}
public void render(MyModel object, Appendable appendable) throws IOException {
String s = render(object);
appendable.append(s);
}
}) {
@Override
public void setAcceptableValues(Collection<MyModel> newValues) {
super.setAcceptableValues(new HashSet<MyModel>(newValues));
}
};
semester.setAcceptableValues(Arrays.asList(new MyModel("1", "a"), new MyModel("1", "a"),
new MyModel("2", "b"), new MyModel("3", "c")));
semester.setValue(new MyModel("1", "a"));
다음을 사용해보십시오.
records.setAcceptableValues(new HashSet<String>(models);
문자열 등이 아닌 다른 사용자 정의 개체 인 경우 해시 코드와 같음을 구현해야합니다.
사용해보세요. records.setAcceptableValues (new HashSet (models); 문자열 등이 아닌 사용자 정의 된 객체 인 경우 해시 코드와 같음을 구현해야합니다. –
bgth
@bgth 답으로 입력하십시오. 올바른 것입니다. 방금 동일한 작업을 수행했습니다. – Braj
답안과 대답 사이에는 한 가지 차이점이 있습니다. setAcceptableValues ()가 호출 될 때마다이 메서드를 재정의 할 것을 제안했습니다. – Braj