I have a List Fragment which has an adapter attached to it as it is shown below. Within getView, the imageLoader will load the images to that view, and the timing and loading works fine,no issues there, but i am not sure what the best way to set the layout height for it, because i know if i set it from an imageLoader it isn't consistent with the getview on the calls. so I am not sure, How to make sure that the view is refreshed and updated, and how i can know the height of the image received?
CODE: TestCustomArrayAdapter
package com.adapters;
public class TestCustomArrayAdapter extends ArrayAdapter<TestItemModel> {
/** Instance Variables **/
// private Instances
private final LayoutInflater _inflater;
public OnItemClickListener _ol;
public ImageLoader _imageLoader;
public TestCustomArrayAdapter(Context context) {
super(context, R.layout.test_list_fragment);
// Set-up inflater
_inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Set-up up Image Loader
_imageLoader = new ImageLoader(context);
}
// Set List Data
public void setData(List<TestItemModel> data) {
clear();
if (data != null) {
for (TestItemModel appEntry : data) {
add(appEntry);
}
}
}
/**
* Populate new items in the list.
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// create viewHolder
View view;
// Check Views
if (convertView == null) {
view = _inflater.inflate(R.layout.test_single_item, parent, false);
} else {
view = convertView;
}
// Create Items
TestItemModel item = getItem(position);
TextView itemLabel = (TextView) view.findViewById(R.id.text_view_label);
TextView itemId = (TextView) view
.findViewById(R.id.text_view_description);
// Create ImageViews
ImageView image = (ImageView) view.findViewById(R.id.image_id);
// Create Buttons
Button btn1 = (Button) view.findViewById(R.id.button_id_1);
Button btn2 = (Button) view.findViewById(R.id.button_id_2);
Button btn3 = (Button) view.findViewById(R.id.button_id_3);
// Create Resources
Resources resources = this.getContext().getResources();
// Create Listeners
_ol = new OnItemClickListener(position, item);
// Setup TextViews
itemLabel.setText(item.getName().toString());
itemId.setText(item.getName().toString());
// Setup Images
_imageLoader.DisplayImage(item.getBm(), image);
// TODO set image size based on the value of the image here
// image.getLayoutParams().height = 100;
// Setup Buttons
btn1.setOnClickListener(_ol);
btn1.setTag(1);
btn2.setOnClickListener(_ol);
btn2.setTag(2);
btn3.setOnClickListener(_ol);
btn3.setTag(3);
return view;
}
private class OnItemClickListener implements OnClickListener {
private int _position;
private TestItemModel _testItem;
public OnItemClickListener(int position, TestItemModel ti) {
_position = position;
_testItem = ti;
}
// TODO
// provide functionality for which button was clicked then pass the item
// to which it was clicked in.
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_id_1:
// btn1 clicked
Toast.makeText(getContext(),
" Button1 clicked at positon" + v.getTag(),
Toast.LENGTH_SHORT).show();
break;
case R.id.button_id_2:
// btn2 clicked
Toast.makeText(getContext(),
" Button2 clicked at positon" + v.getTag(),
Toast.LENGTH_SHORT).show();
break;
case R.id.button_id_3:
Toast.makeText(getContext(),
" Button3 clicked at positon" + v.getTag(),
Toast.LENGTH_SHORT).show();
// btn 3 clciked
break;
}
// the view is the button, so you get get the tag it has set with
// v.getTag() to know what button is pressed.
Log.v("YOOO",
"Button Click at position " + _position + " " + v.getTag()
+ " Item ID = " + _testItem.getId());
}
}
}
To answer my problem, I changed everything within the layout for ImageView to height and width to fill parent, and the image sizing loaded proper to that, which means programmatically I can set minimum heights and widths on my own, for anyone who comes across the same problem.
SNIPPET OF IMAGEVIEW IN LAYOUT:
<ImageView
android:id="@+id/image_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:contentDescription="Image Is Here"
android:src="@drawable/ic_save"
android:text="Sample Image"
android:textSize="20sp" />