- Spinner 下拉框
- ListView 列表
- Adapter自定义 适配器
- GridView 网格视图
1.spinner下拉框
- 创建string-array加载数据
在res文件夹下创建array.xml
<string-array name="sp">
<item>ps</item>
<item>h5</item>
</string-array>
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dialog|dropdown"
android:entries="@array/sp"
android:spinnerMode="dialog"表示Spinner的样式是dialog
android:prompt可以设置dialog的标题(注意必须在string资源下引用,
不然程序会崩掉) ></Spinner>
监听函数:setOnItemSelectedListener
获取值函数:getSelectedItem()
- 通过适配器来填充参数
编写myadapter适配器继承baseadapter 关键的getView方法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=LayoutInflater.from(context);
View v=inflater.inflate(R.layout.sp_layout,null);
TextView pername=v.findViewById(R.id.pername);
TextView perage=v.findViewById(R.id.perage);
pername.setText(list.get(position).getName());
perage.setText(list.get(position).getAge()+"");
return v;
}
主界面:
sp = findViewById(R.id.sp);
List<Person> pers=new ArrayList<Person>(); //准备数据
pers.add(new Person("小红",10));
pers.add(new Person("小明",12));
pers.add(new Person("小军",13));
MyAdapter myAdapter=new MyAdapter(pers,this);//准备适配器
sp.setAdapter(myAdapter);
2.ListView 列表及adapter适配器
- Android自带的适配器
private String data[] =
{"aa","bb","cc","dd","aa","bb","cc","dd","aa","bb","cc","dd","aa","bb","cc","dd"};//假数据
ListView listView = (ListView) findViewById(R.id.listview);//在视图中找到ListView
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);//新建并配置ArrayAapeter
listView.setAdapter(adapter);
- 自定义适配器 继承于baseadapter
@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) {
LayoutInflater inflater=LayoutInflater.from(context);
View v=inflater.inflate(R.layout.sp_layout,null);
TextView pername=v.findViewById(R.id.pername);
TextView perage=v.findViewById(R.id.perage);
pername.setText(list.get(position).getName());
perage.setText(list.get(position).getAge()+"");
return v;
}
适配优化viewholder
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.item, null);
viewHolder.bt1 = (Button) convertView.findViewById(R.id.bt1);
viewHolder.bt2 = (Button) convertView.findViewById(R.id.bt2);
viewHolder.tv = (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
//绑定数据
return convertView;
}
Listview 点击事件setOnItemClickListener
及长按事件setOnItemLongClickListener 返回true可以拦截点击事件
- ListView内部按钮点击事件:
https://blog.csdn.net/zbq1334/article/details/78632454
在adapter钟实现onclick接口
定义一个InnerItemOnclickListener接口,里面实现itemClick
interface InnerItemOnclickListener {
void itemClick(View v);
}
private InnerItemOnclickListener mListener;
写一个InnerItem的监听方法
public void setOnInnerItemOnClickListener(InnerItemOnclickListener listener){
this.mListener=listener;
}
在绑定数据的同时给btn添加点击事件
viewHolder.bt1.setOnClickListener(this);
viewHolder.bt2.setOnClickListener(this);
原生的点击事件实现监听
@Override
public void onClick(View v) {
mListener.itemClick(v);
}
在activity界面;
实现 InnerItemOnclickListener接口
mAdapter.setOnInnerItemOnClickListener(this);
public void itemClick(View v) {
int position;
position = (Integer) v.getTag();
switch (v.getId()) {
case R.id.bt1:
Log.e("内部item--1-->", position + "");
break;
case R.id.bt2:
Log.e("内部item--2-->", position + "");
break;
default:
break;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Log.e("整体item----->", position + "");
}
3.Gridview网格视图
android:numColumns=”auto_fit” //GridView的列数设自动,也可填数字
android:columnWidth=”90dp " //每列的宽度,也就是Item的宽度
android:stretchMode=”columnWidth"//缩放与列宽大小同步
android:verticalSpacing=”10dp” //两行之间的边距
android:horizontalSpacing=”10dp” //两列之间的边距
android:cacheColorHint="#00000000" //去除拖动时默认的黑色背景
android:listSelector="#00000000" //去除选中时的黄色底色
android:scrollbars=“none” //隐藏GridView的滚动条
android:fadeScrollbars=“true” //设置为true就可以实现滚动条的自动隐藏和显示
android:fastScrollEnabled=“true” //GridView出现快速滚动的按钮(至少滚动4页才会显示)
整体用法和Listview类似, 注意加粗的三个属性