Stringをsortすることは、ArrayAdapterのsort()を使ってみるのとおりです。
今回はArrayAdapterを使ってLocaleをsortします。
toString()メソッドを実装しているObjectであればArrayAdapterで取り扱えます。幸いにして、Locale classはtoString()メソッドを実装しています。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView lv;
lv = new ListView(this);
setContentView(lv);
ArrayAdapter<Locale> aa;
aa = new ArrayAdapter<Locale>(this, R.layout.activity_main, ls);
aa.sort(new MyComparator());
lv.setAdapter(aa);
}
public class MyComparator implements Comparator<Locale>{
@Override
public int compare(Locale l1, Locale l2){
int iRet;
iRet = l1.getLanguage().compareTo(l2.getLanguage());
if(iRet==0){
return l1.getCountry().compareTo(l2.getCountry());
}
else return iRet;
}
}
Locale[] ls = {//ランダムに並んでいる
Locale.CHINA,
Locale.FRENCH,
Locale.CANADA,
Locale.JAPANESE,
Locale.GERMANY,
Locale.ENGLISH,
Locale.CANADA,
Locale.GERMAN,
Locale.JAPAN,
Locale.US,
Locale.FRANCE,
Locale.UK
};
}
R.layout.activity_mainのxmlは次のとおりです。
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
>
</TextView>
0 件のコメント:
コメントを投稿