如何增加gridview的setOnItemClickListener [英] How to add gridview setOnItemClickListener

查看:135
本文介绍了如何增加gridview的setOnItemClickListener的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有与它81键的GridView。欲clicklistener添加到此gridview的,但它不提供。我不明白,我添加OnItemClickListener,但它不工作。有一个与code没有错误。只有我已经是一个不工作OnItemClickListener。

我的gridview的孩子上它具有(gridview_members.xml)按钮;

 <?XML版本=1.0编码=UTF-8&GT?;
<的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
><按钮
    机器人:ID =@ + ID /城
    机器人:layout_width =183dp
    机器人:layout_height =90dp
    机器人:TEXTSIZE =19sp
    机器人:文字样式=大胆
    机器人:文字=code \\ n \\ nCity
    机器人:比重=中心
    机器人:背景=@绘制/ city_btn_tablet/>< / RelativeLayout的>

我ImageAdapter类;

 公共类ImageAdapter延伸BaseAdapter {
私人语境mContext;公共ImageAdapter(上下文C){
    mContext = C;
}公众诠释的getCount(){
    返回81;
}公共对象的getItem(INT位置){
    返回null;
}众长getItemId(INT位置){
    返回0;
}@覆盖
公共查看getView(INT位置,查看convertView,父母的ViewGroup){    LayoutInflater吹气=(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    查看GridView控件;    GridView控件=新景(mContext);    GridView控件= inflater.inflate(R.layout.gridview_members,NULL);    按钮城市=(按钮)gridView.findViewById(R.id.city);    返回GridView控件;
}}

在activity_main.xml中的GridView实施;

 < GridView控件
机器人:ID =@ + ID / GridView控件
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:horizo​​ntalSpacing =5DP
机器人:verticalSpacing =5DP
机器人:比重=中心
机器人:stretchMode =columnWidth时
机器人:为numColumns =6>
< / GridView的>

最后我MainActivity.java文件;

 公共类MainActivity延伸活动{@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);    GridView控件的GridView =(GridView控件)findViewById(R.id.gridview);
    gridview.setAdapter(新ImageAdapter(本));    gridview.setOnItemClickListener(新OnItemClickListener(){
        @覆盖
        公共无效onItemClick(适配器视图<>母公司,视图V,INT位置,长的id){
            Toast.makeText(MainActivity.this,+位置,Toast.LENGTH_SHORT).show();
        }
    });
}
}


解决方案

您请求的项目不点击按钮内部项目的点击,所以你需要改变你的孩子XML布局

 <?XML版本=1.0编码=UTF-8&GT?;
<的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
><按钮
    机器人:ID =@ + ID /城
    机器人:layout_width =183dp
    机器人:layout_height =90dp
    机器人:TEXTSIZE =19sp
    机器人:文字样式=大胆
    机器人:文字=code \\ n \\ nCity
    机器人:比重=中心
    机器人:背景=@绘制/ city_btn_tablet/>< / RelativeLayout的>

 <?XML版本=1.0编码=UTF-8&GT?;
<按钮
    的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:ID =@ + ID /城
    机器人:layout_width =183dp
    机器人:layout_height =90dp
    机器人:TEXTSIZE =19sp
    机器人:可点击=真
    机器人:文字样式=大胆
    机器人:文字=code \\ n \\ nCity
    机器人:比重=中心
    机器人:背景=@绘制/ city_btn_tablet/>

也可以添加ClickListener内apater

  @覆盖
公共查看getView(INT位置,查看convertView,父母的ViewGroup){    LayoutInflater吹气=(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    查看GridView控件;    GridView控件=新景(mContext);    GridView控件= inflater.inflate(R.layout.gridview_members,NULL);    按钮城市=(按钮)gridView.findViewById(R.id.city);                city​​.setOnClickListener(新View.OnClickListener(){
        @覆盖
        公共无效的onClick(视图v){    //这里吐司        }});    返回GridView控件;
}

I have a GridView with 81 button on it. I want to add clicklistener to this gridview but it is not available. I can not understand that i add OnItemClickListener but it is not working. There is no error with the code. Only i have is a not working OnItemClickListener.

My gridview children which has a button on it(gridview_members.xml);

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<Button
    android:id="@+id/city"
    android:layout_width="183dp"
    android:layout_height="90dp"
    android:textSize="19sp"
    android:textStyle="bold"
    android:text="Code\n\nCity"
    android:gravity="center"
    android:background="@drawable/city_btn_tablet" />

</RelativeLayout>

My ImageAdapter class;

public class ImageAdapter extends BaseAdapter {
private Context mContext;

public ImageAdapter(Context c) {
    mContext = c;
}

public int getCount() {
    return 81;
}

public Object getItem(int position) {
    return null;
}

public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View gridView;

    gridView =new View(mContext);

    gridView = inflater.inflate(R.layout.gridview_members, null);

    Button city = (Button) gridView.findViewById(R.id.city);

    return gridView;
}

}

Gridview implementation on activity_main.xml ;

<GridView
android:id="@+id/gridview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:horizontalSpacing="5dp"
android:verticalSpacing="5dp"
android:gravity="center"
android:stretchMode="columnWidth"
android:numColumns="6" >
</GridView>

And finally my MainActivity.java file;

public class MainActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
        }
    });
}
}

解决方案

you are requesting item click not button click inside item , so you need to change your child xml layout

from

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<Button
    android:id="@+id/city"
    android:layout_width="183dp"
    android:layout_height="90dp"
    android:textSize="19sp"
    android:textStyle="bold"
    android:text="Code\n\nCity"
    android:gravity="center"
    android:background="@drawable/city_btn_tablet" />

</RelativeLayout>

to

<?xml version="1.0" encoding="utf-8"?>
<Button
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/city"
    android:layout_width="183dp"
    android:layout_height="90dp"
    android:textSize="19sp"
    android:clickable="true"
    android:textStyle="bold"
    android:text="Code\n\nCity"
    android:gravity="center"
    android:background="@drawable/city_btn_tablet" />

or you can add ClickListener inside apater

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View gridView;

    gridView =new View(mContext);

    gridView = inflater.inflate(R.layout.gridview_members, null);

    Button city = (Button) gridView.findViewById(R.id.city);

                city.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

    //Toast here

        }});

    return gridView;
}

这篇关于如何增加gridview的setOnItemClickListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆