質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

2028閲覧

しつしつ【Android】AdapterクラスからAdapterクラスを呼んだ際に画像が取得できない

netcafeohashi

総合スコア13

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/07/21 06:17

編集2016/07/22 01:17

AndroidでList内にGridで複数の画像を表示させたいのですが、1度目の表示では画像が表示されず、
2回目以降の表示では画像が読み込まれた状態で表示がされます。

1度目の画面表示で画像を表示させることができないので困っています。
■呼び出し元のAdapter

lang

1import android.content.Context; 2import android.util.Log; 3import android.view.LayoutInflater; 4import android.view.View; 5import android.view.ViewGroup; 6import android.widget.BaseAdapter; 7import android.widget.GridView; 8import android.widget.ListAdapter; 9import android.widget.TextView; 10 11import java.util.ArrayList; 12 13import hogehoge.model.GridviewObject; 14import hogehoge.model.postStoryComment; 15 16public class StoryCommentListviewImageLoaderAdapter extends BaseAdapter{ 17 18 private Context activity; 19 private ArrayList<postStoryComment> data; 20 private static LayoutInflater inflater = null; 21 private View vi; 22 private ViewHolder viewHolder; 23 GridviewInListviewAdapter mAdapter; 24 ArrayList<GridviewObject> mArray = new ArrayList<GridviewObject>(); 25 GridviewAdapter mGrid; 26 int numImg; 27 28 public StoryCommentListviewImageLoaderAdapter(Context context, ArrayList<postStoryComment> items) { 29 this.activity = context; 30 this.data = items; 31 inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 32 } 33 34 @Override 35 public int getCount() { 36 return data.size(); 37 } 38 39 @Override 40 public Object getItem(int i) { 41 return i; 42 } 43 44 @Override 45 public long getItemId(int i) { 46 return i; 47 } 48 49 @Override 50 public View getView(int position, View view, ViewGroup viewGroup) { 51 vi = view; 52 final int pos = position; 53 postStoryComment items = data.get(pos); 54 if(view == null) { 55 Log.d("LogD", "IF Adapter"+view+" , Position : "+position); 56 57 vi = inflater.inflate(R.layout.comment_itemlist, null); 58 viewHolder = new ViewHolder(); 59 viewHolder.name = (TextView) vi.findViewById(R.id.psCommentUser); 60 viewHolder.date = (TextView) vi.findViewById(R.id.psCommentDate); 61 viewHolder.content = (TextView) vi.findViewById(R.id.psCommentTxt); 62 mGrid = (GridviewAdapter) vi.findViewById(R.id.commentgridview); 63 64 vi.setTag(viewHolder); 65 }else 66 viewHolder = (ViewHolder) view.getTag(); 67 viewHolder.name.setText(items.getUser()); 68 viewHolder.date.setText(items.getDate()); 69 viewHolder.content.setText(items.getContent()); 70 71 mArray.clear(); 72 numImg=0; 73 String testUrl = items.getImg(); 74 75 String[] separated = testUrl.split(","); 76 numImg = separated.length; 77 if(!testUrl.equals("")) { 78 Log.d("LogD", "DO Gridview : "+position); 79 80 for (String item : separated) { 81 Log.d("LogD", "add : " + item); 82 mArray.add(new GridviewObject(item)); 83 } 84 Log.d("LogD", "NumImg : " + numImg); 85 mAdapter = new GridviewInListviewAdapter(activity, mArray); 86 mGrid.setNumColumns(numImg); 87 mGrid.setAdapter(mAdapter); 88 setDynamicWidth(mGrid); 89 } 90 91 92 93 return vi; 94 } 95 public ArrayList<postStoryComment> getAllData(){ 96 return data; 97 } 98 99 100 public class ViewHolder{ 101 TextView name; 102 TextView date; 103 TextView content; 104 GridviewAdapter gridview; 105 TextView image; 106 } 107 108 private void setDynamicWidth(GridView gridView) { 109 ListAdapter gridViewAdapter = gridView.getAdapter(); 110 if (gridViewAdapter == null) { 111 return; 112 } 113 int totalWidth; 114 int items = gridViewAdapter.getCount(); 115 View listItem = gridViewAdapter.getView(0, null, gridView); 116 listItem.measure(0, 0); 117 totalWidth = listItem.getMeasuredWidth(); 118 totalWidth = totalWidth*items; 119 ViewGroup.LayoutParams params = gridView.getLayoutParams(); 120 params.width = totalWidth; 121 gridView.setLayoutParams(params); 122 } 123} 124

■呼び出し先のAdapter

lang

1 2import android.content.Context; 3import android.view.LayoutInflater; 4import android.view.View; 5import android.view.ViewGroup; 6import android.widget.ImageView; 7import android.widget.BaseAdapter; 8 9import com.squareup.picasso.Picasso; 10 11import java.util.ArrayList; 12 13import hogehoge.model.GridviewObject; 14import hogehoge.R; 15 16public class GridviewImageLoaderAdapter extends BaseAdapter{ 17 18 Context mContext; 19 ArrayList<GridviewObject> mArray = new ArrayList<GridviewObject>(); 20 private static LayoutInflater inflater = null; 21 22 public GridviewImageLoaderAdapter(Context context, ArrayList<GridviewObject> objects) { 23 24 this.mContext = context; 25 this.mArray = objects; 26 inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 27 } 28 29 @Override 30 public int getCount() { 31 return mArray.size(); 32 } 33 34 @Override 35 public Object getItem(int i) { 36 return i; 37 } 38 39 @Override 40 public long getItemId(int i) { 41 return i; 42 } 43 44 public class ViewHolder { 45 46 ImageView mImage; 47 48 } 49 50 @Override 51 public View getView(int position, View convertView, ViewGroup parent) { 52 53 ViewHolder holder; 54 55 GridviewObject object = mArray.get(position); 56 57 if (convertView == null) { 58 convertView = inflater.inflate(R.layout.gridview_item_comment, parent,false); 59 holder = new ViewHolder(); 60 holder.mImage = (ImageView) convertView.findViewById(R.id.gvItem); 61 convertView.setTag(holder); 62 }else{ 63 holder = (ViewHolder) convertView.getTag(); 64 } 65 66 67 Picasso.with(mContext).load(object.getImgUrl()).fit().into(holder.mImage); 68 69 return convertView; 70 71 } 72}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yona

2016/07/21 06:51

うまくいかないではわかりません。 なにがどうなっているのか詳細に書いてください。
guest

回答1

0

下記の内容を確認してください。

  • setDynamicWidth内のparams.widthの値。
  • Adapterに渡す前のmArrayの要素数

コードについて

  • mGridの型はGridviewAdapterではなくGridViewの誤り?
  • StoryComment略のgetViewの冒頭部分のelseブロックの波カッコが無いのはなぜか。
  • mArrayがフィールド変数になっている理由。

投稿2016/07/22 03:11

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問