わかった。だから私は小さな電子ブック ストア アプリを作っています。本のリストを含むstrings.xmlに文字列配列があります。各配列項目には、カバー画像へのパス、タイトル、作成者、およびジャンルを含む 4 つのデータが含まれています。以下のコードでは、配列内の書籍ごとに View オブジェクトを作成し、それらを画面に出力しています。現在、タブ + スワイプ レイアウトを使用しており、タイトル、作成者、ジャンルの 3 つのタブがあります。私がやりたいのは、ビューの配列を、選択されているタブに応じて、タイトル、作成者、またはジャンルのいずれかで並べ替えることです。私がこれを行うことができる方法を知っている人はいますか?
public static class SectionFragment extends Fragment {
private static ScrollView outerLayout;
private static LinearLayout innerLayout;
private static LayoutParams params;
private static ArrayList <String []> bookData = new ArrayList <String []> ();
private static String [] bookList;
public SectionFragment () { }
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
params = new LayoutParams (LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
outerLayout = new ScrollView (context);
outerLayout.setLayoutParams(params);
innerLayout = new LinearLayout (context);
innerLayout.setLayoutParams(params);
innerLayout.setOrientation(LinearLayout.VERTICAL);
bookList = res.getStringArray(R.array.bookList);
for (int i = 0; i < bookList.length; i++) {
View bookView = new View (context);
bookView = inflater.inflate(R.layout.grid_cell, null);
ImageView bookCover = (ImageView) bookView.findViewById(R.id.bookCover);
TextView bookTitle = (TextView) bookView.findViewById(R.id.bookTitle);
TextView bookAuthor = (TextView) bookView.findViewById(R.id.bookAuthor);
TextView bookGenre = (TextView) bookView.findViewById(R.id.bookGenre);
bookData.add(bookList[i].split("\\|"));
try {
bookCover.setImageDrawable(Drawable.createFromStream(
context.getAssets().open(bookData.get(i)[0]), null));
} catch (IOException e) {
e.printStackTrace();
}
bookTitle.setText(bookData.get(i)[1]);
bookAuthor.setText("by " + bookData.get(i)[2]);
bookGenre.setText(bookData.get(i)[3]);
innerLayout.addView(bookView);
}
outerLayout.addView(innerLayout);
return outerLayout;
}
}