想到啥写啥第一期:致力于更简单易懂的代码解决我们安卓小白遇到的问题
知识点就写个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也有这个快捷键的构造......不管啦,就是这样!
希望对你们有所帮助,祝各位看官老爷长命百岁啊哈哈哈哈!
来源:CSDN
作者:weixin_43272727
链接:https://blog.csdn.net/weixin_43272727/article/details/104043963