如何通过imageview

时间:2018-06-03 03:53:20

标签: java android

我是新手,只在1个月左右学习Java。 我试图通过网格视图创建组图片,如果我点击任何图片然后显示用户警告对话框,请询问用户是否要删除图片。但不知何故,当我尝试按图像设置网格视图的事件。我无法启动应用。可以帮我找到崩溃导致应用无法启动的地方。



package com.example.hi.gridviewhinhanh;

import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {

        ArrayList<Danhsachhinhanh> manghinhanh;
        HinhanhAdapter arrayAdapter;
        GridView gridView;
        ImageView imgView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gridView = findViewById(R.id.gridview);
        manghinhanh = new ArrayList<>();
        manghinhanh.add(new Danhsachhinhanh(R.drawable.chupanh));
        manghinhanh.add(new Danhsachhinhanh(R.drawable.goidien));
        manghinhanh.add(new Danhsachhinhanh(R.drawable.photoshop));
        manghinhanh.add(new Danhsachhinhanh(R.drawable.quality));
        manghinhanh.add(new Danhsachhinhanh(R.drawable.secutiry));
        manghinhanh.add(new Danhsachhinhanh(R.drawable.signuptoday));
        arrayAdapter = new HinhanhAdapter(MainActivity.this, manghinhanh);
        gridView.setAdapter(arrayAdapter);
        
        imgView = findViewById(R.id.imageviewHinhanh);
        imgView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder hopthoai = new AlertDialog.Builder(MainActivity.this);
                hopthoai.setTitle("Do you want to delete");
                hopthoai.setMessage("Please confirm");
                hopthoai.setIcon(R.mipmap.ic_launcher);
                hopthoai.setCancelable(false);
                hopthoai.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
                hopthoai.setNegativeButton("No", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "You choose No", Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
}
&#13;
&#13;
&#13;

&#13;
&#13;
package com.example.hi.gridviewhinhanh;

import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageView;

import java.util.ArrayList;
import java.util.List;

public class HinhanhAdapter extends BaseAdapter {

    Context context;
    ArrayList<Danhsachhinhanh> danhsachhinhanhArrayList;
    public  HinhanhAdapter (Context context, ArrayList<Danhsachhinhanh> danhsachhinhanhArrayList){
        this.context = context;
        this.danhsachhinhanhArrayList = danhsachhinhanhArrayList;

    }

    @Override
    public int getCount() {
        return danhsachhinhanhArrayList.size();
    }

    @Override
    public Object getItem(int position) {
        return danhsachhinhanhArrayList.get(position);
    }

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

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(context);
        convertView = inflater.inflate(R.layout.dong_item_gridviewhinhanh,null);
        ImageView imageView = convertView.findViewById(R.id.imageviewHinhanh);
        Danhsachhinhanh danhsachhinhanh = (Danhsachhinhanh) getItem(position);
        imageView.setImageResource(danhsachhinhanh.getHinhanh());

        return convertView;
    }

}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

将你的imageView clickListener放在Adapter的getView()中并再次检查。

因为你的imageView不存在。有关适配器和循环视图的更多信息,请参阅。