想到啥写啥第一期:致力于更简单易懂的代码解决我们安卓小白遇到的问题
知识点就写个BaseAdapter+GridView吧
大概样子就是这个:
来人啊,上代码!
和listView,simpleAdapter步骤其实差不多
1,UI
2,适配器
3,绑定,完工
UI:
(gridview.xml)<GridViewandroid: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"><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:text="测试文本"android:textSize="20sp"android:gravity="center"android:layout_height="50sp"/><ImageViewandroid:id="@+id/image"android:layout_width="100sp"android:layout_height="100sp"android:src="@drawable/ic_launcher_foreground"/><Buttonandroid: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);}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic 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() {@Overridepublic 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;@Overrideprotected 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也有这个快捷键的构造......不管啦,就是这样!
希望对你们有所帮助,祝各位看官老爷长命百岁啊哈哈哈哈!