2つのパラメータ(両方とも文字列)を持つCardViewsのリサイラビューがあります。タイトルの1つですが、タイトルに基づいてアルファベット順にソートするボタンがあります。Android RecyclerViewで文字列を並べ替える方法は?
それは私がOで挿入ソートを使用することを決めた、あまりにも多くの要素を持っていない(N^2)、これは私の実装であるため、:
public void ISortDes(String[]strings){
int j;
String key;
int i;
for (j = 1; j < strings.length; j++)
{
key = strings[ j ];
for(i = j - 1; (i >= 0) ; i--)
{
if (key.compareTo(strings[i]) > 0){
break;
}
strings[ i+1 ] = strings[ i ];
}
strings[ i+1 ] = key;
}
for (int k = 0; k < strings.length; k++){
System.out.println(strings[k]);
}
}
それはそれらを文字列の配列を受け取り、順序付け。
そして、これはパラメータを取り、私のRecyclerViewの方法である:
private void initializeData() {
categories = new ArrayList<>();
categories.add(new Categories("CARS", "CARS"));
categories.add(new Categories("SPORTS", "SPORTS"));
categories.add(new Categories("GAMING", "GAMING"));
categories.add(new Categories("GAMBLING", "GAMBLING"));
categories.add(new Categories("TECH", "TECH"));
categories.add(new Categories("NATURE", "NATURE"));
categories.add(new Categories("RANDOM", "RANDOM"));
categories.add(new Categories("COUSINE", "COUSINE"));
categories.add(new Categories("HISTORY", "HISTORY"));
categories.add(new Categories("MUSIC", "MUSIC"));
categories.add(new Categories("STUDIES", "STUDIES"));
}
私は文字列配列に何とかその最初のparamaterを渡すと、それをソートする必要があると思います。
アイデアは、RecyclerViewが表示されている同じアクティビティのボタンにソート方法を持たせ、別のアクティビティに行かずに並べ替える必要があるということです。
私はここで少し失われています。
私がしようとしているのは、 "タイトル"パラメータに基づいてアルファベット順にRecyclerViewの要素(この場合はCardViews)を注文するbuttomを持つことです。
私の考えは正しいですか、これを行う別の方法がありますか、これを達成するために何をすべきですか?
ありがとうございます。
あなたのコードは完璧に機能しましたが、私のコードで 'notifyDataSetChanged()'をどこに適用すればいいですか? –
ソート後に 'adapter.notifyDataSetChanged()'を適用して問題を解決しました.Thanks :) –
@SamarthKejriwalはい、私はメソッドの起源が正確ではありませんでした。メソッドが属するクラスを追加します; – xiaomi