开发者社区> 问答> 正文

GridView 设置项监听事件 怎么无效?:配置报错 

JAVA代码:

package cn.ywspace.demo;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity; import android.app.ActivityGroup; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter;

import android.widget.GridView; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast;

public class FirstProActivity extends Activity { /** Called when the activity is first created. */

GridView gView;


List<Integer> icoList;
List<Integer> unselIcoList;
List<String> titlelList;
int lastClickNum,curClickNum;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    
    gView=(GridView)findViewById(R.id.grid);


    SetData();
    
    
    GridAdper gridAdper=new GridAdper(this);
    

    gView.setAdapter(gridAdper);
    gView.setNumColumns(4);
    gView.setGravity(Gravity.CENTER);
    gView.setSelector(new ColorDrawable(Color.TRANSPARENT));
    gView.setBackgroundResource(R.drawable.tab_bg);
  
    
    
    setListener();
}

private void setListener(){

	
	gView.setOnItemClickListener(new OnItemClickListener() {

		@Override
		public void onItemClick(AdapterView<?> parent, View view,
				int position, long id) {
			// TODO Auto-generated method stub
			
			Log.i("ywspace",""+position);
			
			lastClickNum=curClickNum;
			curClickNum=position;
			
		
			
			if (curClickNum==lastClickNum) {
				return;
			}
			
			RelativeLayout layout=(RelativeLayout)gView.getChildAt(position);
			layout.setBackgroundResource(R.drawable.product_title_bg);
			layout.getChildAt(0).setBackgroundResource(icoList.get(position));
			
			for (int i = 0; i < icoList.size(); i++) {
				if(i!=position){
					RelativeLayout temp=(RelativeLayout)gView.getChildAt(i);
					temp.setBackgroundDrawable(null);
					temp.getChildAt(0).setBackgroundResource(unselIcoList.get(i));
				}
			}
			
		}
		
	});
}
private void SetData(){
	icoList=new ArrayList<Integer>();
	unselIcoList=new ArrayList<Integer>();
	titlelList=new ArrayList<String>();
	
	icoList.add(R.drawable.tab_home_selected);
	unselIcoList.add(R.drawable.tab_home_normal);
	
	icoList.add(R.drawable.tab_category_selected);
	unselIcoList.add(R.drawable.tab_category_normal);
	
	icoList.add(R.drawable.tab_rank_selected);
	unselIcoList.add(R.drawable.tab_rank_normal);
	
	icoList.add(R.drawable.tab_app_select);
	unselIcoList.add(R.drawable.tab_app_unselect);    	
	
	titlelList.add("主页");
	titlelList.add("分类");
	titlelList.add("排行");
	titlelList.add("管理");
	
}
private class GridAdper extends BaseAdapter{

    LayoutInflater inflater;
	public GridAdper(Context context){
		inflater=LayoutInflater.from(context);
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return titlelList.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		ItemHolder holder;
		if (convertView==null) {
			convertView=(View)inflater.inflate(R.layout.grid_item, null);
			holder=new ItemHolder();
			
			holder.img=(ImageView)convertView.findViewById(R.id.img);
			holder.txt=(TextView)convertView.findViewById(R.id.title);
			
			convertView.setTag(holder);
			
		}else{
			holder=(ItemHolder)convertView.getTag();
		}
		
		holder.img.setBackgroundResource(unselIcoList.get(position));
		holder.txt.setText(titlelList.get(position));			
		
		return convertView;
	}
	
	
	
}
private final class ItemHolder{
	public ImageView img;
	public TextView txt;
}

}

XML 布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ViewFlipper android:id="@+id/fliper" ;       android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <GridView android:id="@+id/grid" ;       android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="bottom" android:layout_weight="0"
/>

</LinearLayout>

各位大牛 帮忙看看 那里出问题了?

展开
收起
kun坤 2020-05-31 22:42:07 493 0
1 条回答
写回答
取消 提交回答
  • Log.i("ywspace",""+position); 这行代码执行了吗?######

    引用来自“鉴客”的答案

    Log.i("ywspace",""+position); 这行代码执行了吗?
    没有噢 ######

    引用来自“鉴客”的答案

    Log.i("ywspace",""+position); 这行代码执行了吗?
    很是不解,在这里随便设置其他UI控件 的监听事件 都好好的  就这个GridView  不起效。
    2020-05-31 22:42:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载