Android GridView サンプル2

android_grid_view02

AndroAndroid GridView のグリッドに表示していた画像の部分をカスタムViewにする

https://www.typea.info/blog/index.php/2017/09/09/android_gridview をベースに以下を変更する

1.GridViewの要素レイアウト を追加

画像を含んだ、GridViewの要素レイアウトを定義

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical" android:layout_width="match_parent"
  4. android:layout_height="match_parent">
  5.  
  6. <TextView
  7. android:id="@+id/txt_menu_item"
  8. android:layout_width="match_parent"
  9. android:layout_height="match_parent"
  10. android:text="MenuItem"/>
  11.  
  12. <ImageView
  13. android:id="@+id/img_menu_item"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. />
  17. </LinearLayout>

2.Adapter の変更

GridView要素レイアウトを構築するよう修正

  1. package info.typea.kaigiutil;
  2.  
  3. import android.content.Context;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.BaseAdapter;
  8. import android.widget.ImageView;
  9. import android.widget.TextView;
  10.  
  11. /**
  12. * Created by pppiroto on 2017/09/09.
  13. */
  14. public class MenuItemAdapter extends BaseAdapter{
  15. private Context context;
  16. private LayoutInflater layoutInflater;
  17.  
  18. private Integer[] menuItemThumbIds = {
  19. R.mipmap.ic_launcher,
  20. R.mipmap.ic_launcher,
  21. R.mipmap.ic_launcher,
  22. R.mipmap.ic_launcher,
  23. R.mipmap.ic_launcher,
  24. R.mipmap.ic_launcher,
  25. R.mipmap.ic_launcher
  26. };
  27.  
  28. public MenuItemAdapter(Context context) {
  29. this.context = context;
  30. this.layoutInflater = LayoutInflater.from(context);
  31. }
  32.  
  33. @Override
  34. public int getCount() {
  35. return menuItemThumbIds.length;
  36. }
  37.  
  38. @Override
  39. public Object getItem(int position) {
  40. return null;
  41. }
  42.  
  43. @Override
  44. public long getItemId(int position) {
  45. return 0;
  46. }
  47.  
  48. @Override
  49. public View getView(final int position, View convertView, ViewGroup parent) {
  50.  
  51. MenuItemViewHolder viewHolder;
  52. if (convertView == null) {
  53. convertView = layoutInflater.inflate(R.layout.menu_item, null);
  54. viewHolder = new MenuItemViewHolder();
  55. viewHolder.txtMenuItem = (TextView)convertView.findViewById(R.id.txt_menu_item);
  56. viewHolder.imgMenuItem = (ImageView)convertView.findViewById(R.id.img_menu_item);
  57. convertView.setTag(viewHolder);
  58. } else {
  59. viewHolder = (MenuItemViewHolder)convertView.getTag();
  60. }
  61. viewHolder.txtMenuItem.setText(String.format("MENU ITEM %02d",position));
  62. viewHolder.imgMenuItem.setImageResource(menuItemThumbIds[position]);
  63.  
  64. return convertView;
  65. }
  66. public static class MenuItemViewHolder {
  67. public TextView txtMenuItem;
  68. public ImageView imgMenuItem;
  69. }
  70. }

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です