Hey all,
First of all, i want to thank you Alessandro for this lovely component. I have also tested the dev-smart's HorizontalListView, and i am getting much better results with your view.
Unfortunately though, I am suffering from one main problem - while i can scroll nice and smooth, i can't catch onItemClicked events. I have followed the example you've provided in the demo activity. More frustrating is the fact that when i test the same views and layouts i am using, with android's native ListView, and dev-smart's HLV it actually works. I made sure i was using the correct classed, but still can't get it to work.
Would appreciate if you guys could take a look at my code, and see whether i am doing something terribly catastrophic. After looking at it for the entire day, i am positive i am missing something very fundamental
The element view:
<ImageView
android:id="@+id/channel_slide_thumbnail_bg"
android:layout_width="134dp"
android:layout_height="134dp"
android:clickable="false"
android:background="@drawable/thumb_fpo_223x223" />
<ImageView
android:id="@+id/channel_slide_thumbnail_photo"
android:layout_width="132dp"
android:layout_height="132dp"
android:layout_alignLeft="@+id/channel_slide_thumbnail_bg"
android:layout_alignTop="@+id/channel_slide_thumbnail_bg"
android:layout_marginLeft="1dp"
android:layout_marginTop="1dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"/>
<ImageView
android:id="@+id/channel_slide_thumbnail_header"
android:layout_width="134dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/channel_slide_thumbnail_bg"
android:layout_alignTop="@+id/channel_slide_thumbnail_bg"
android:background="@drawable/header_thumb_channel" />
<TextView
android:id="@+id/channel_slide_thumbnail_channel_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/channel_slide_thumbnail_header"
android:layout_alignLeft="@+id/channel_slide_thumbnail_header"
android:layout_marginLeft="6dp"
android:textSize="12sp"
android:textColor="@color/white"/>
<TextView
android:id="@+id/channel_slide_thumbnail_viewer_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/channel_slide_thumbnail_header"
android:layout_alignRight="@+id/channel_slide_thumbnail_header"
android:layout_marginRight="6dp"
android:textSize="12sp"/>
HVLV's container
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/slide_menus_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back_home" />
<ImageView
android:id="@+id/slide_menus_recommended_subheader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/subheader_channels" />
<TextView
android:id="@+id/slide_menus_recommended_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/slide_menus_recommended_subheader"
android:layout_marginLeft="@dimen/slider_subheader_horizontal_margin"
android:layout_marginBottom="@dimen/slider_subheader_vertical_margin"
android:text="@string/recommended_label" />
<it.sephiroth.android.library.widget.HorizontalVariableListView
android:id="@+id/slide_menus_recommended_slider"
android:layout_width="fill_parent"
android:layout_height="134dp"
android:layout_below="@+id/slide_menus_recommended_subheader" />
<ImageView
android:id="@+id/slide_menus_talk_subheader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/slide_menus_recommended_slider"
android:background="@drawable/subheader_channels" />
<TextView
android:id="@+id/slide_menus_talk_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/slide_menus_talk_subheader"
android:layout_marginLeft="@dimen/slider_subheader_horizontal_margin"
android:layout_marginBottom="@dimen/slider_subheader_vertical_margin"
android:text="@string/talk_label" />
<it.sephiroth.android.library.widget.HorizontalVariableListView
android:id="@+id/slide_menus_talk_slider"
android:layout_width="fill_parent"
android:layout_height="134dp"
android:layout_below="@+id/slide_menus_talk_subheader" />
</RelativeLayout>
Element adapter
public class ChannelSlideThumbnailsAdapter extends BaseAdapter {
private Activity activity;
private List<ChannelSlideData> channelsSlideData;
private static LayoutInflater inflater=null;
public ChannelSlideThumbnailsAdapter(Activity a, List<ChannelSlideData> channelsSlideData) {
activity = a;
this.channelsSlideData = channelsSlideData;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return channelsSlideData.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.view_channelslidethumbnail, null);
ImageView channelPhoto = (ImageView) vi.findViewById(R.id.channel_slide_thumbnail_photo);
TextView channelName = (TextView)vi.findViewById(R.id.channel_slide_thumbnail_channel_name);
TextView channelViewersNumber = (TextView)vi.findViewById(R.id.channel_slide_thumbnail_viewer_number);
ChannelSlideData channelSlideData = channelsSlideData.get(position);
try {
InputStream ims = activity.getAssets().open(channelSlideData.avatarUrl);
Drawable d = Drawable.createFromStream(ims, null);
channelPhoto.setImageDrawable(d);
}
catch(IOException ex) {
}
channelName.setText(channelSlideData.channelName);
channelViewersNumber.setText(Integer.toString(channelSlideData.viewersNo));
return vi;
}
}
View creation:
mRecommendedSlide = (HorizontalVariableListView) getActivity().findViewById(R.id.slide_menus_recommended_slider);
final List<ChannelSlideData> channelSlideThumbnailsData = new ArrayList<ChannelSlideData>();
ChannelSlideData channelSlideData;
for (int i=0; i < 10 ; i++) {
channelSlideData = new ChannelSlideData();
channelSlideData.avatarUrl = "images/camel.png";
channelSlideData.channelName = "Shows";
channelSlideData.viewersNo = 1000;
channelSlideThumbnailsData.add(channelSlideData);
}
ChannelSlideThumbnailsAdapter adapter = new ChannelSlideThumbnailsAdapter(getActivity(), channelSlideThumbnailsData);
mRecommendedSlide.setOverScrollMode( HorizontalVariableListView.OVER_SCROLL_ALWAYS );
mRecommendedSlide.setAdapter(adapter);
mRecommendedSlide.setOnItemClickedListener( new OnItemClickedListener() {
@Override
public boolean onItemClick( AdapterView<?> parent, View view, int position, long id ) {
Log.e( TAG_LOG, "onItemClick: " + position );
return true;
}
});
Would appreciate any help with this.
Thanks,
K