import com.example.s_demo.R;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class MyGridView_MainActivity extends Activity {
private static final String TAG = "sxy";
private GridView mygridview_GridV = null;
private Typeface typeFace = null;
public MyGridView_MainActivity() {
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mygridview_mainactivity);
init();
}
private int pageColCount = 4;//每页列数
private int itemTotal = 0;
String chengyuStr[] = null;
private void init(){
typeFace = Typeface.createFromFile("/system/fonts/hifont_kai.ttf");
mygridview_GridV = (GridView)findViewById(R.id.mygridview_GridV);
chengyuStr = getResources().getStringArray(R.array.chengyu);
itemTotal = chengyuStr.length;
Log.i(TAG, "itemTotal="+itemTotal);
mygridview_GridV.setNumColumns(pageColCount);
mygridview_GridV.setAdapter(new MyAdapter(this));
mygridview_GridV.setHorizontalSpacing(10);
setListener();
}
private int preSelId = -1;//记录每次选择项id,方便突出显示被选择项
private View preSelView = null;//记录每次选择项,方便突出显示被选择项
private long lastClickTime = 0;//记录上次点击时间,避免快速多次点击
private void setListener(){
mygridview_GridV.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
long currentTime = System.currentTimeMillis();
if(currentTime - lastClickTime < 500)
return;
lastClickTime = currentTime;
if(position < itemTotal && preSelId != position){
TextView contentTv = (TextView)arg1;
contentTv.setBackgroundColor(Color.RED);
contentTv.setTextColor(Color.WHITE);
Log.i(TAG, "preselid="+preSelId+", position="+position+", child="+arg0.getChildCount());
if(preSelView != null){
TextView preSelContentTv = (TextView)preSelView;
preSelContentTv.setBackgroundColor(Color.WHITE);
preSelContentTv.setTextColor(Color.BLACK);
}
preSelId = position;
preSelView = arg1;
}
}
});
}
private class MyAdapter extends BaseAdapter{
private Context mContext;
public MyAdapter(Context context) {
this.mContext=context;
}
@Override
public int getCount() {
// Log.i(TAG, "getCount ="+itemTotal);
return itemTotal;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
private final static int SEL_FONTSIZE = 30;//字体大小
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Log.i(TAG, "getView position="+position);
TextView contentTv;
if(convertView==null){
contentTv=new TextView(mContext);
}else{
contentTv = (TextView) convertView;
}
contentTv.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.WRAP_CONTENT,
GridView.LayoutParams.WRAP_CONTENT));
contentTv.setTextSize(SEL_FONTSIZE);
contentTv.setGravity(Gravity.CENTER);
contentTv.setTypeface(typeFace);
if(preSelId == position){
contentTv.setBackgroundColor(Color.RED);
contentTv.setTextColor(Color.WHITE);
}else{
contentTv.setBackgroundColor(Color.WHITE);
contentTv.setTextColor(Color.BLACK);
}
String text = chengyuStr[position];
if(text != null)
contentTv.setText(text);
return contentTv;
}
}
}
mygridview_mainactivity.xmlchengyu.xml