滚动显示内容的方式有两种,一种是用ScrollView,是静态的,适合固定内容的显示,如手机设置,另一种就是使用ListView实现动态添加下拉内容。ListView默认使用的是TextView的布局,使用这种,只需要创建一个字符数组或者List列表,里面添加想要显示的选项数据值就可以了。
例:首先得到ListView 对象 listView;
ListView listView = (ListView)findViewById(R.id.listView);
然后创建适配器,使用默认的布局,将之前创建好的list列表传进去就可以了。
ArrayAdapter<Stirng> arrayAdapter = new ArrayAdapter<Stirng>(MainActivity.this
,android.R.layout.simple_list_item_1,list);
如果需要定义自定义列表选项,则需要创建一个自定义的列表选项布局,如listview_items.xml;
在里面定义好后,创建相应的类,类的属性即为列表中选项中需要展示的控件id或者名字
如:想创建一个有图标和名字的选项,需要在类中定义int imgId, String name;
该类的构造方法中要求传入布局的ID,因此需要创建一个recId变量,用于保存传进来的资源id,用于初始化view.
public AppNameAdapter(Context context, int resource, List<AppName> objects) {
super(context, resource, objects);
this.recId = resource;
}
然后创建一个自定义适配器继承ArrayAdapter,重写其中的getView方法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
详细代码如下所示:
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
ViewHolder viewHolder = new ViewHolder();
//获取相应位置的对象
AppName appName = getItem(position);
//如果convertView为空,则创建View
if(convertView == null){
view = LayoutInflater.from(getContext()).inflate(recId,null);
viewHolder.imageView = (ImageView)view.findViewById(R.id.img_list_item);
viewHolder.textView = (TextView)view.findViewById(R.id.appname);
//将viewHolder存在view中
view.setTag(viewHolder);
}
else {
view = convertView;
viewHolder = (ViewHolder)view.getTag();
}
//对布局的控件进行设置
viewHolder.imageView.setImageResource(appName.getAppIMG());
viewHolder.textView.setText(appName.getAppName());
return view;
}
//为方便管理,创建ViewHolder类对控件属性进行管理,这样当convertView不为空时,可以直接
//获取以前的控件,而不用再findViewById进行初始化了
class ViewHolder{
private ImageView imageView;
private TextView textView;
}
配置好自定义的adapter后,跟之前创建默认适配器一样,只是适配器换在了自定义的适配器,传的id值换成自定义的layout的id值就可以了。值得注意的是,一定不要忘记初始化list里的内容。