package com.coolbeetle.widget;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.HorizontalScrollView;
import android.widget.Toast;
import com.coolbeetle.widget.adapter.GridAdapter;
import com.coolbeetle.widget.model.GridModel;
/**
* Horizontal scroller to implements selection.
* @author coolbeetle.net
* @since 1.0
*
*/
public class HorizontalScrollerSelction extends Activity {
private GridView gridView;
private HorizontalScrollView scrollView;
private LayoutInflater inflater;
private List<GridModel> grids = new ArrayList<GridModel>();
private GridAdapter gridAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
inflater = LayoutInflater.from(this);
this.initMockData();
this.setContentView(R.layout.horizontal_scroller_selection);
this.gridView = (GridView) findViewById(R.id.gridview);
this.scrollView = (HorizontalScrollView) this.findViewById(R.id.scrollView);
/**
* 如果想要隐藏scroller bar的话 直接设置为false 就好了。
*/
//this.scrollView.setHorizontalScrollBarEnabled(false);
initHorizontalView();
}
/**
* 初始化 数据
*/
private void initMockData(){
for(int i = 0; i < 10; i++){
GridModel grid = new GridModel();
grid.setId(String.valueOf(i));
grid.setName("记录栏:" + i);
grids.add(grid);
}
}
private void initHorizontalView(){
this.gridAdapter = new GridAdapter(inflater, grids);
if(!grids.isEmpty()){
gridAdapter.setCurrentGrid(grids.get(0));//设置默认的选中的item
}
gridView.setAdapter(gridAdapter);
/**
* 初始化grid view的布局,这里很重要。这里根据数据的多少,和单个item的宽度来动态设置grid view的长度。
*
*/
LayoutParams layoutParams = new LayoutParams(gridAdapter.getCount() * (110), LayoutParams.WRAP_CONTENT);
gridView.setLayoutParams(layoutParams);
gridView.setColumnWidth(100);
gridView.setHorizontalSpacing(10);
gridView.setStretchMode(GridView.NO_STRETCH);
gridView.setNumColumns(gridAdapter.getCount());//因为现实在一行,所以这里设置列数就是数据的多少
/**
* 当点击水平滑动篮中的某个对象的时候,就切换对象的图片效果,这样就造成了选择者为一种,其他的效果为另外一种。
* 这里可以根据用户自身的徐柳来完成。
*/
gridView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
GridModel selectGrid = grids.get(position);
gridAdapter.setCurrentGrid(selectGrid);
gridAdapter.notifyDataSetInvalidated();
Toast.makeText(HorizontalScrollerSelction.this, "你正在选择 '"+ selectGrid.getName(),Toast.LENGTH_SHORT).show();
}
});
}
}