睡眠不足とアンドロイドの経験不足の組み合わせが原因で、この問題が発生していると思います。
2 つのフラグメントを持つアプリがあります。左側のフラグメント (私が関心を持っているもの) は、次のように宣言されています。
public class CollageLibraryFragment extends ListFragment implements ListAdapter
画像のサムネイル、その画像に関するいくつかのデータ、および垂直 LinearLayout のボタンを持つカスタム ビューのリストを保持する必要があります。
ImageViews だけのリストを正常に表示できましたが、画像とボタンを含むカスタム ViewGroup (表示されるとデータが表示されます) がリストに表示されません。
私の推測では、カスタム ViewGroup に onDraw または onLayout を実装する必要がありますが、ここで何をすべきかわからず、恥ずかしいことに 4 時間以上いじっています。
関連するコードを次に示します。
CollageLibraryFragment では:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_pictureCollageDataModel = PictureCollageDataModel.getInstance();
_images = _pictureCollageDataModel.getCollageImages();
if(_listView == null)
_listView = new ListView(getActivity());
_listView.setAdapter(this);
}
....
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ThumbnailView thumbnailView = new ThumbnailView(getActivity(), _images.get(i));
//ImageView imageView = new ImageView(getActivity());
//imageView.setImageBitmap(_images.get(i)._image.getBitMap());
return thumbnailView;
}
....
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
//link to list view
return _listView;
}
getView メソッドの ImageView がコメントアウトされていることに注意してください。期待どおり、リストフラグメントに表示されます。ただし、ThumbnailView に切り替えても表示されません。
私の全体のサムネイルビュー:
public class ThumbnailView extends ViewGroup
{
Bitmap _thumbnail;
LinearLayout _mainViewGroup = null;
public ThumbnailView(Context context, CollageImage image)
{
super(context);
_thumbnail = image._image.getBitMap();
_mainViewGroup = new LinearLayout(context);
_mainViewGroup.setBackgroundColor(Color.RED);
_mainViewGroup.setOrientation(LinearLayout.VERTICAL);
ImageView thumbView = new ImageView(context);
thumbView.setImageBitmap(_thumbnail);
_mainViewGroup.addView(thumbView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
Button addButton = new Button(context);
addButton.setText("+");
_mainViewGroup.addView(addButton);
this.addView(_mainViewGroup);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
_mainViewGroup.setMinimumWidth(100);
_mainViewGroup.setMinimumHeight(100);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
}
}
今、私はこれをぼんやりと見ているような気がします.物事を適切に定義したり、適切な方法で配置したりしていないだけだと確信していますが、何らかの理由で壁にぶつかっただけで、正しい方向に少し微調整して、続行できると思います。
どんな助けも非常に輝かしいものになるでしょう。
ありがとう!