Android gridview设置OnItemSelectedListener不工作

Android gridview设置OnItemSelectedListener不工作,android,android-gridview,Android,Android Gridview,我有一个带有imageview和textview的网格视图。Gridview itemSelectedListener不工作。我已经尝试了这里提供的所有解决方案,即使可聚焦和可点击为真或假。若我在适配器中应用click listener,那个么它工作正常。我不明白问题是什么 我的代码是- MainActivity.java XML文件- main.xml gridlayout.xml 如果您想在用户单击GridView中的每个项目时执行某些操作,则应使用GridView的setOnItemCli

我有一个带有imageview和textview的网格视图。Gridview itemSelectedListener不工作。我已经尝试了这里提供的所有解决方案,即使可聚焦和可点击为真或假。若我在适配器中应用click listener,那个么它工作正常。我不明白问题是什么

我的代码是-

MainActivity.java

XML文件-

main.xml

gridlayout.xml


如果您想在用户单击GridView中的每个项目时执行某些操作,则应使用GridView的setOnItemClickListener

gridView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         if (position == 0) {
             Intent createGrp = new Intent(HomeScreen.this,CreateGroup.class);
             startActivity(createGrp);
         }
});
如果getView出现问题,请尝试修改的代码:

@凌驾 公共视图getViewfinal int位置、视图转换视图、视图组父视图{

ViewHolder holder = null;
// First let's verify the convertView is not null
if (convertView == null) 
{
    // This a new view we inflate the new layout
    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.gridview_layout, parent,false);

    holder = new ViewHolder();

    holder.tv=(TextView) convertView.findViewById(R.id.txt);
    holder.img=(ImageView) convertView.findViewById(R.id.imageView1);
    holder.img.setClickable(false);
    convertView.setTag(holder);  
 }
 else
    holder = (ViewHolder)convertView.getTag(); 

    holder.tv.setText(option[position]);
    holder.img.setImageResource(imageId[position]);

 return convertView;
}

onItemSelectedListener用于选择视图项,但不用于单击,您无法获得onItemSelected。。。当点击。只有:

仅当新选择的位置与以前选择的位置不同或没有选择的项目时,才会调用此回调


希望这有帮助

为什么不使用itemclicklistener?@Raghunandan是的,它解决了我的问题。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <include layout="@layout/welcome_logout"/>

 <GridView
     android:id="@+id/gridView1"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:numColumns="2" 
     android:layout_marginTop="@dimen/editTextMarginTop"
     android:gravity="center"
     android:stretchMode="columnWidth"
     android:clickable="true">
 </GridView>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp"
    android:layout_gravity="center">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"/>

    <TextView
        android:id="@+id/txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:gravity="center_horizontal"/>

</LinearLayout>
gridView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         if (position == 0) {
             Intent createGrp = new Intent(HomeScreen.this,CreateGroup.class);
             startActivity(createGrp);
         }
});
ViewHolder holder = null;
// First let's verify the convertView is not null
if (convertView == null) 
{
    // This a new view we inflate the new layout
    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.gridview_layout, parent,false);

    holder = new ViewHolder();

    holder.tv=(TextView) convertView.findViewById(R.id.txt);
    holder.img=(ImageView) convertView.findViewById(R.id.imageView1);
    holder.img.setClickable(false);
    convertView.setTag(holder);  
 }
 else
    holder = (ViewHolder)convertView.getTag(); 

    holder.tv.setText(option[position]);
    holder.img.setImageResource(imageId[position]);

 return convertView;