GridView

test_gridview代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.my.myapplication.Test_GridView"
    android:orientation="vertical">

    <GridView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/gv_1"
        android:numColumns="4"
        android:stretchMode="columnWidth"
        android:horizontalSpacing="30dp"></GridView>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="添加"
        android:onClick="bt_onClick"
        android:id="@+id/bt_1"/>
</LinearLayout>
View Code

gridview代码:

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

    <ImageView
        android:layout_width="110dp"
        android:layout_height="110dp"
        android:src="@drawable/f1"
        android:id="@+id/iv_2"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv_9"/>

</LinearLayout>
View Code

tianjia代码:

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

    <EditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="从a,b,c里面选择图片"
             android:id="@+id/et_3"/>
    <EditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="请输入名称"
             android:id="@+id/et_4"/>
</LinearLayout>
View Code

Activity代码:

package com.example.my.myapplication;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

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

public class Test_GridView extends AppCompatActivity {

    GridView gv_1;
    List<MyClass> liv;
    TextView tv_9;
    ImageView iv_2;
    Button bt_1;
    final ImageAdapter imageAdapter = new ImageAdapter();

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

        gv_1=(GridView)findViewById(R.id.gv_1);
        tv_9=(TextView)findViewById(R.id.tv_9);
        iv_2=(ImageView)findViewById(R.id.iv_2);
        bt_1=(Button)findViewById(R.id.bt_1);

        //1.数据 图片的id
        liv=new ArrayList<>();
        MyClass myClass=new MyClass(R.drawable.f1,"美食1的价格");
        liv.add(myClass);
        liv.add(new MyClass(R.drawable.f2,"美食2的价格"));
        liv.add(new MyClass(R.drawable.f3,"美食3的价格"));
        liv.add(new MyClass(R.drawable.f4,"美食4的价格"));
        liv.add(new MyClass(R.drawable.f5,"美食5的价格"));
        liv.add(new MyClass(R.drawable.f6,"美食6的价格"));
        liv.add(new MyClass(R.drawable.f7,"美食7的价格"));
        liv.add(new MyClass(R.drawable.f8,"美食8的价格"));
        liv.add(new MyClass(R.drawable.f9,"美食9的价格"));


        final ImageAdapter im=new ImageAdapter();

        gv_1.setAdapter(im);

        gv_1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                final MyClass myClass = liv.get(position);
                LayoutInflater layoutInflater = getLayoutInflater();
                final View view1 = layoutInflater.inflate(R.layout.tianjia, null);
                new AlertDialog.Builder(Test_GridView.this)
                        .setTitle("修改内容")
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                EditText et_3=(EditText)view1.findViewById(R.id.et_3);
                                String string1=et_3.getText().toString();
                                EditText et_4 = (EditText)view1.findViewById(R.id.et_4);
                                String string2 = et_4.getText().toString();
                                String a="a",b="b",c="c",d="d";
                                if (string1.equals(a))
                                {
                                    if (string2.length() ==0)
                                    {
                                        myClass.setImg(R.drawable.a1);
                                    }
                                    else
                                    {
                                        myClass.setImg(R.drawable.a1);
                                        myClass.setContent(string2);
                                    }
                                }
                                else if (string1.equals(b))
                                {
                                    if (string2.length() ==0)
                                    {
                                        myClass.setImg(R.drawable.a2);
                                    }
                                    else
                                    {
                                        myClass.setImg(R.drawable.a2);
                                        myClass.setContent(string2);
                                    }
                                }
                                else if (string1.equals(c))
                                {
                                    if (string2.length() ==0)
                                    {
                                        myClass.setImg(R.drawable.a3);
                                    }
                                    else
                                    {
                                        myClass.setImg(R.drawable.a3);
                                        myClass.setContent(string2);
                                    }
                                }

                                else
                                {
                                    Toast.makeText(Test_GridView.this, "请做出至少一项修改", Toast.LENGTH_SHORT).show();
                                }
                                imageAdapter.notifyDataSetChanged();
                            }
                        })
                        .setView(view1)
                        .show();
            }
        });
        //长按删除的监听器
        gv_1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

                //删除数据
                //从集合里删除长按的数据
                liv.remove(position);

                //刷新视图,看到效果
                //通知适配器,数据源改变了
                im.notifyDataSetChanged();
                Toast.makeText(Test_GridView.this, "删除了记录索引 = "+position, Toast.LENGTH_SHORT).show();
                return true;//事件已经被消费,不要再处理了
            }
        });

    }
    public void bt_onClick(View v)
    {
        final View view=View.inflate(Test_GridView.this,R.layout.tianjia,null);
        new AlertDialog.Builder(Test_GridView.this)
                .setTitle("请操作。。。")
                .setView(view)
                .setPositiveButton("添加", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        EditText et_3=(EditText)view.findViewById(R.id.et_3);
                        String string1=et_3.getText().toString();
                        EditText et_4 = (EditText)view.findViewById(R.id.et_4);
                        String string2 = et_4.getText().toString();
                        String a="a",b="b",c="c",d="d";
                        if(string1.equals(a))
                        {
                            liv.add(new MyClass(R.drawable.a1,string2));
                        }
                        else if (string1.equals(b))
                        {
                            liv.add(new MyClass(R.drawable.a2,string2));
                        }
                        else if (string1.equals(c))
                        {
                            liv.add(new MyClass(R.drawable.a3,string2));
                        }

                        else 
                        {
                            Toast.makeText(Test_GridView.this, "请从a,b,c中选择", Toast.LENGTH_SHORT).show();
                        }
                        imageAdapter.notifyDataSetChanged();


                    }
                })
                .setNegativeButton("取消",null)
                .setView(view)
                .show();
    }

    class MyClass
    {
        private int img;
        private String content;
        public  int getImg()
        {
            return img;
        }
        public void setImg(int img)
        {
            this.img=img;
        }
        public String getContent()
        {
            return content;
        }
        public void setContent(String content)
        {
            this.content=content;
        }
        public MyClass(int img,String content)
        {
            this.img=img;
            this.content=content;
        }
    }

    //适配器

    class ImageAdapter extends BaseAdapter
    {
        @Override
        public int getCount() {
            return liv.size();
        }

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

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

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

            //1.得到数据 图片的id
            MyClass myClass=liv.get(position);

            //2.准备View
            if (convertView==null)
            {
                convertView=View.inflate(Test_GridView.this,R.layout.gridview,null);

            }

            //3.适配
            //转换
            ImageView imageView=(ImageView)convertView.findViewById(R.id.iv_2);
            imageView.setImageResource(myClass.getImg());

//            imageView.setMaxWidth(70);
//            imageView.setMaxHeight(70);
            //imageView.setLayoutParams(new GridView.LayoutParams(70,70));

            TextView textView=(TextView)convertView.findViewById(R.id.tv_9);
            textView.setText(myClass.getContent());
            return convertView;
        }
    }
}
View Code
原文地址:https://www.cnblogs.com/beens/p/5520316.html