class CustomTweetTimelineListAdapter extends TweetTimelineListAdapter {
public CustomTweetTimelineListAdapter
(Context context, Timeline
<Tweet
> timeline
) { super(context, timeline);
}
@Override
public View getView
(final int position,
View convertView, ViewGroup parent
) { View view
= super.
getView(position, convertView, parent
);
//disable subviews
if(view instanceof ViewGroup){
disableViewAndSubViews((ViewGroup) view);
}
//enable root view and attach custom listener
view.setEnabled(true);
view.
setOnClickListener(new View.
OnClickListener() { @Override
public void onClick
(View v
) { String tweetId
= "click tweetId:"+getItemId
(position
); Toast.makeText(context, tweetId, Toast.LENGTH_SHORT).show();
TimelineActivity.showTweetActivity(getItemId(position));
}
});
return view;
}
private void disableViewAndSubViews(ViewGroup layout) {
layout.setEnabled(false);
for (int i = 0; i < layout.getChildCount(); i++) {
View child
= layout.
getChildAt(i
); if (child instanceof ViewGroup) {
disableViewAndSubViews((ViewGroup) child);
} else {
child.setEnabled(false);
child.setClickable(false);
child.setLongClickable(false);
}
}
}
Y2xhc3MgQ3VzdG9tVHdlZXRUaW1lbGluZUxpc3RBZGFwdGVyIGV4dGVuZHMgVHdlZXRUaW1lbGluZUxpc3RBZGFwdGVyIHsKCiAgICBwdWJsaWMgQ3VzdG9tVHdlZXRUaW1lbGluZUxpc3RBZGFwdGVyKENvbnRleHQgY29udGV4dCwgVGltZWxpbmU8VHdlZXQ+IHRpbWVsaW5lKSB7CiAgICAgICAgc3VwZXIoY29udGV4dCwgdGltZWxpbmUpOwogICAgfQoKICAgIEBPdmVycmlkZQogICAgcHVibGljIFZpZXcgZ2V0VmlldyhmaW5hbCBpbnQgcG9zaXRpb24sIFZpZXcgY29udmVydFZpZXcsIFZpZXdHcm91cCBwYXJlbnQpIHsKICAgICAgICBWaWV3IHZpZXcgPSBzdXBlci5nZXRWaWV3KHBvc2l0aW9uLCBjb252ZXJ0VmlldywgcGFyZW50KTsKCiAgICAgICAgLy9kaXNhYmxlIHN1YnZpZXdzCiAgICAgICAgaWYodmlldyBpbnN0YW5jZW9mIFZpZXdHcm91cCl7CiAgICAgICAgICAgIGRpc2FibGVWaWV3QW5kU3ViVmlld3MoKFZpZXdHcm91cCkgdmlldyk7CiAgICAgICAgfQoKICAgICAgICAvL2VuYWJsZSByb290IHZpZXcgYW5kIGF0dGFjaCBjdXN0b20gbGlzdGVuZXIKICAgICAgICB2aWV3LnNldEVuYWJsZWQodHJ1ZSk7CiAgICAgICAgdmlldy5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IFZpZXcuT25DbGlja0xpc3RlbmVyKCkgewogICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKICAgICAgICAgICAgICAgIFN0cmluZyB0d2VldElkID0gImNsaWNrIHR3ZWV0SWQ6IitnZXRJdGVtSWQocG9zaXRpb24pOwogICAgICAgICAgICAgICAgVG9hc3QubWFrZVRleHQoY29udGV4dCwgdHdlZXRJZCwgVG9hc3QuTEVOR1RIX1NIT1JUKS5zaG93KCk7CiAgICAgICAgICAgICAgICBUaW1lbGluZUFjdGl2aXR5LnNob3dUd2VldEFjdGl2aXR5KGdldEl0ZW1JZChwb3NpdGlvbikpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIHZpZXc7CiAgICB9CgogICAgcHJpdmF0ZSB2b2lkIGRpc2FibGVWaWV3QW5kU3ViVmlld3MoVmlld0dyb3VwIGxheW91dCkgewogICAgICAgIGxheW91dC5zZXRFbmFibGVkKGZhbHNlKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxheW91dC5nZXRDaGlsZENvdW50KCk7IGkrKykgewogICAgICAgICAgICBWaWV3IGNoaWxkID0gbGF5b3V0LmdldENoaWxkQXQoaSk7CiAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIFZpZXdHcm91cCkgewogICAgICAgICAgICAgICAgZGlzYWJsZVZpZXdBbmRTdWJWaWV3cygoVmlld0dyb3VwKSBjaGlsZCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjaGlsZC5zZXRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgICAgICAgIGNoaWxkLnNldENsaWNrYWJsZShmYWxzZSk7CiAgICAgICAgICAgICAgICBjaGlsZC5zZXRMb25nQ2xpY2thYmxlKGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0K