@Override
public int compareTo(final myRow another) {
final int BEFORE =-1;
final int EQUAL = 0;
final int AFTER = 1;
if (this==another) return EQUAL;
if (sorttype==sort_type.SORT_ABC) {
int rv =0;
int sorted =row.toLowerCase().compareTo(another.getRow().toLowerCase());
if (this.getUserType()==user_type.USER_TYPE_BANNED) rv=AFTER;
if (this.getUserType()==user_type.USER_TYPE_NORMAL) rv=sorted;
if (this.getUserType()==user_type.USER_TYPE_FRIEND) rv=BEFORE;
Log.e("sorted", row+" "+this.getUserType()+" - "+rv+" ");
return rv;
} else if (sorttype==sort_type.SORT_LOGINTIME) {
if (this.getUserType()==user_type.USER_TYPE_BANNED) {
return AFTER;
}
if (this.getUserType()==user_type.USER_TYPE_NORMAL) return EQUAL;
if (this.getUserType()==user_type.USER_TYPE_FRIEND) {
//int sorted =row.toLowerCase().compareTo(another.getRow().toLowerCase());
return BEFORE;
}
//return 0;
}
return 0;
//return row.toLowerCase().compareTo(another.getRow().toLowerCase());
}
ニックネームを持つStringユーザーリストがあります。私は、ユーザー、通常のユーザー、および友人のユーザーを禁止しています。AndroidのJavaソートの比較
友達のユーザーをリストの一番上に並べ替え、禁止されたユーザーをリストの一番下に並べ替えるのが好きで、私はそれらを表示するのがASCスタイルです。
どうすればいいですか?
ので、構造は次のとおりです。
Abc (friend)
abrt (friend)
dfgh (friend)
abdfg (normal user)
bnmm (normal user)
wert (normal user)
Andgh (banned user)
Dfghhj (banned user)
Qwer (banned user)
私はこの取得:あなたのABCのソートロジックは動作しません
06-19 14:43:46.586: ERROR/AndroidRuntime(23434): java.lang.IllegalArgumentException: Comparison method violates its general contract!
このメソッドの名前は、「myRow」ですか? –