public class EpisodeListView extends RelativeLayout implements View.OnFocusChangeListener {
public static final String TAG = EpisodeListView.class.get**Name();
private Context mContext;
private RelativeLayout mContentPanel;
private RecyclerView mChildrenView;
private RecyclerView mParentView;
private LinearLayoutManager mEpisodesLayoutManager;
private LinearLayoutManager mGroupLayoutManager;
private EpisodeListViewAdapter mEpisodeListAdapter;
private ChildrenAdapter mChildrenAdapter;
private ParentAdapter mParentAdapter;
private Handler mHandler = new Handler(Looper.getMainLooper());
public EpisodeListView(Context context) {
this(context, null);
}
public EpisodeListView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public EpisodeListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
if (!isInEditMode()) {
mContext = context;
init();
}
}
private void init() {
LayoutInflater inflater = LayoutInflater.from(mContext);
inflater.inflate(R.layout.episodelist_layout, this, true);
mChildrenView = (RecyclerView) findViewById(R.id.episodes);
mParentView = (RecyclerView) findViewById(R.id.groups);
mEpisodesLayoutManager = new LinearLayoutManager(mContext, LinearLayout.HORIZONTAL, false);
mGroupLayoutManager = new LinearLayoutManager(mContext, LinearLayout.HORIZONTAL, false);
mChildrenView.setLayoutManager(mEpisodesLayoutManager);
mParentView.setLayoutManager(mGroupLayoutManager);
mChildrenView.setItemAnimator(new DefaultItemAnimator());
mParentView.setItemAnimator(new DefaultItemAnimator());
mChildrenView.setOnFocusChangeListener(this);
mParentView.setOnFocusChangeListener(this);
this.setOnFocusChangeListener(this);
}
public void setAdapter(final EpisodeListViewAdapter adapter) {
mEpisodeListAdapter = adapter;
mChildrenAdapter = adapter.getEpisodesAdapter();
mParentAdapter = adapter.getGroupAdapter();
mChildrenView.setAdapter(mChildrenAdapter);
mParentView.setAdapter(mParentAdapter);
mParentAdapter.setOnItemClickListener(new ParentAdapter.OnItemClickListener() {
@Override
public void onGroupItemClick(View view, int position) {
mEpisodesLayoutManager.scrollToPositionWithOffset(adapter.getChildrenPosition(position), 0);
}
});
mParentAdapter.setOnItemFocusListener(new ParentAdapter.OnItemFocusListener() {
@Override
public void onGroupItemFocus(View view, int position, boolean hasFocus) {
int episodePosition = adapter.getChildrenPosition(position);
mChildrenAdapter.setCurrentPosition(episodePosition);
mEpisodesLayoutManager.scrollToPositionWithOffset(adapter.getChildrenPosition(position), 0);
}
});
mChildrenAdapter.setOnItemFocusListener(new ChildrenAdapter.OnItemFocusListener() {
@Override
public void onEpisodesItemFocus(View view, int position, boolean hasFocus) {
if (hasFocus) {
int groupPosition = adapter.getParentPosition(position);
mGroupLayoutManager.scrollToPositionWithOffset(groupPosition, 0);
mParentAdapter.setCurrentPosition(adapter.getParentPosition(groupPosition));
}
}
});
mChildrenAdapter.setOnItemClickListener(new ChildrenAdapter.OnItemClickListener() {
@Override
public void onEpisodesItemClick(View view, int position
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除