【问题标题】:Android gridView not workin onItemClickAndroid gridView在ItemClick上不起作用
【发布时间】:2014-04-29 18:42:27
【问题描述】:

我正在尝试使用 gridView,但我无法在 ItemClick 上打开对话框。我写了代码,但是当我按下一个项目时它什么也没做。我尝试了所有项目,但仍然没有。谢谢!!!

这是我的 Galerie.java:

package com.descoper.rom;

import java.util.ArrayList;


import android.os.Bundle;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;



public class Galerie extends Activity {
    GridView gridView;
    ArrayList<Item> gridArray = new ArrayList<Item>();
     GalerieAdapter customGridAdapter;
     private Dialog dialog;
     Context context;

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

        //set grid view item
        Bitmap homeIcon = BitmapFactory.decodeResource(this.getResources(), R.drawable.ro);
        Bitmap userIcon = BitmapFactory.decodeResource(this.getResources(), R.drawable.ro);

        gridArray.add(new Item(homeIcon,"Home"));
        gridArray.add(new Item(userIcon,"User"));
        gridArray.add(new Item(homeIcon,"House"));
        gridArray.add(new Item(userIcon,"Friend"));
        gridArray.add(new Item(homeIcon,"Home"));
        gridArray.add(new Item(userIcon,"Personal"));
        gridArray.add(new Item(homeIcon,"Home"));
        gridArray.add(new Item(userIcon,"User"));
        gridArray.add(new Item(homeIcon,"Building"));
        gridArray.add(new Item(userIcon,"User"));
        gridArray.add(new Item(homeIcon,"Home"));
        gridArray.add(new Item(userIcon,"xyz"));


        gridView = (GridView) findViewById(R.id.gridView1);
        customGridAdapter = new GalerieAdapter(this, R.layout.galerie_row, gridArray);
        gridView.setAdapter((ListAdapter) customGridAdapter);
    }


    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

        if(position == 0){
             dialog = new Dialog(context);
             dialog.setContentView(R.layout.dialog1);
             dialog.setTitle(position);

             TextView text = (TextView) dialog.findViewById(R.id.textView1);
             Button btnSave = (Button) dialog.findViewById(R.id.button1);

             btnSave.setOnClickListener(new OnClickListener() {

                 @Override
                 public void onClick(View v) {

                     dialog.dismiss();

                 }
             });
             dialog.show();
         }


        if(position == 1){
            Toast.makeText(Galerie.this, "APASATAAAAAAA" + position, Toast.LENGTH_SHORT).show();
        }
        if(position ==2){
            Toast.makeText(Galerie.this, "APASATAAAAAAA" + position, Toast.LENGTH_SHORT).show();
        }

    }

}

【问题讨论】:

    标签: android gridview onitemclick


    【解决方案1】:

    您不会错过对 gridView.setOnItemClickListener 的调用吗?这样做:

        gridView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if(position == 0){
                    dialog = new Dialog(context);
                    dialog.setContentView(R.layout.dialog1);
                    dialog.setTitle(position);
    
                    TextView text = (TextView) dialog.findViewById(R.id.textView1);
                    Button btnSave = (Button) dialog.findViewById(R.id.button1);
    
                    btnSave.setOnClickListener(new OnClickListener() {
    
                        @Override
                        public void onClick(View v) {
    
                            dialog.dismiss();
    
                        }
                    });
                    dialog.show();
                }
    
    
               if(position == 1){
                   Toast.makeText(Galerie.this, "APASATAAAAAAA" + position, Toast.LENGTH_SHORT).show();
               }
               if(position ==2){
                   Toast.makeText(Galerie.this, "APASATAAAAAAA" + position, Toast.LENGTH_SHORT).show();
               }
            }
        });
    

    【讨论】:

    • 我试过这种方式..但它出错并说:Multiple markers at this line - The method setOnItemClickListener(AdapterView.OnItemClickListener) in the type AdapterView&lt;ListAdapter&gt; is not applicable for the arguments (new OnItemClickListener(){}) - OnItemClickListener cannot be resolved to a typegridView.setOnItemClickListener(new OnItemClickListener() {
    • 类型错误。 GridView 需要 android.widget.AdapterView.OnItemClickListener,我想导入它应该可以解决您的问题。
    • 我以某种方式修复了它。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-12-11
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2012-12-05
    相关资源
    最近更新 更多