想到啥写啥第一期:BaseAdapter+GridView

隐身守侯 提交于 2020-01-28 09:59:49

想到啥写啥第一期:致力于更简单易懂的代码解决我们安卓小白遇到的问题


知识点就写个BaseAdapter+GridView吧

大概样子就是这个:
在这里插入图片描述
来人啊,上代码!

和listView,simpleAdapter步骤其实差不多
1,UI
2,适配器
3,绑定,完工
UI:
(gridview.xml)
    <GridView
        android:id="@+id/gridView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="3"
        android:verticalSpacing="40sp"
        android:horizontalSpacing="20sp"/>
(griditem.xml)
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="120sp"
    android:gravity="center"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:text="测试文本"
        android:textSize="20sp"
        android:gravity="center"
        android:layout_height="50sp"/>
    <ImageView
        android:id="@+id/image"
        android:layout_width="100sp"
        android:layout_height="100sp"
        android:src="@drawable/ic_launcher_foreground"/>
    <Button
        android:id="@+id/button"
        android:text="点我"
        android:textSize="20sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>
BaseAdapter:
private class MyAdapter extends BaseAdapter{

        Context context;
        List<MyBean> list;
        LayoutInflater inflater;

        public MyAdapter(Context context, List<MyBean> list) {
            this.context = context;
            this.list = list;
            inflater = LayoutInflater.from(context);
        }

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

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

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            convertView = inflater.inflate(R.layout.griditem,null);
            TextView textView = convertView.findViewById(R.id.textView);
            ImageView imageView = convertView.findViewById(R.id.image);
            Button button = convertView.findViewById(R.id.button);
            final MyBean bean = list.get(position);
            textView.setText(bean.getText());
            imageView.setImageResource(bean.getPic());
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(context,bean.getText(),Toast.LENGTH_SHORT).show();
                }
            });
            return convertView;
        }
    }
写一个Bean包,用来存取数据
    private class MyBean implements Serializable{
        private String text;
        private int pic;

        public MyBean(String text, int pic) {
            this.text = text;
            this.pic = pic;
        }

        public String getText() {
            return text;
        }

        public void setText(String text) {
            this.text = text;
        }

        public int getPic() {
            return pic;
        }

        public void setPic(int pic) {
            this.pic = pic;
        }
    }
最后就是适配器的配置工作MainActivity.java
public class MyGridView extends AppCompatActivity {
    private GridView gridView;
    private List<MyBean> list = new ArrayList<>();

    private MyAdapter adapter;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridview);
        
        gridView = findViewById(R.id.gridView);
        for (int i=0;i<6;i++){
            MyBean bean = new MyBean("测试文本"+i,
                    R.drawable.ic_launcher_foreground);
            list.add(bean);
        }
        adapter = new MyAdapter(this,list);
        
        gridView.setAdapter(adapter);
    }
奥对了,要说一个快捷键方式就是Alt+insert   可以用来直接产生构造方法
就像public MyBean(String text, int pic) {
            this.text = text;
            this.pic = pic; }
            这种构造方法,按下之后选择constructor就可以了
            而get,set方法也是这个快捷键,不过要按下Getter and Setter这个键
我记得我学eclipse的时候java也有这个快捷键的构造......不管啦,就是这样!

希望对你们有所帮助,祝各位看官老爷长命百岁啊哈哈哈哈!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!