左边scrollview 中添加Button,表示种类。
scrollview中嵌套LinearLayout leftContainer
leftContainer.removeAllViews();//清除所有子view
for (int i = 0; i < size; i++) {
entity = mList.get(i);
button = new Button(ProductMangerActivity.this);
button.setId(i);
button.setGravity(Gravity.LEFT|Gravity.CENTER_VERTICAL);
button.setTextColor(redColor);
button.setTextSize(16);
button.setBackgroundResource(unSelect_res);
button.setText(entity.catalogName);
button.setMinHeight(minBtnHeight);
leftContainer.addView(button);
}
leftContainer.getChildAt(0).setBackgroundResource(select_res);
for (int i = 0; i < size; i++) {
leftContainer.getChildAt(i).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isScroll = false;
int id = v.getId();
int rightSection = 0;
//设置背景
for (int j = 0; j < size; j++) {
if (id != j) {
leftContainer.getChildAt(j).setBackgroundResource(unSelect_res);
} else {
leftContainer.getChildAt(id).setBackgroundResource(select_res);
}
}
//确定selection的位置
for (int i = 0; i < id; i++) {
rightSection += sectionedAdapter.getCountForSection(i) + 1;
}
right_listview.setSelection(rightSection);
}
});
}
右边,通过滚动实现左边scrollview中button状态的改变。
// boolean isScroll
right_listview.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView arg0, int arg1) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (size == 0 || leftContainer.getChildCount() <= 0) {
return;
}
if (isScroll) {
for (int i = 0; i < size; i++) {
//判断该项是哪个组
if (i == sectionedAdapter.getSectionForPosition(firstVisibleItem)) {
leftContainer.getChildAt(i).setBackgroundResource(select_res);
} else {
leftContainer.getChildAt(i).setBackgroundResource(unSelect_res);
}
}
} else {
isScroll = true;
}
}
});