Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
android自定义alertdialog_手机端java开发工具,希望能够帮助你!!!。
开发步骤:
一、ListView的每个Item展示效果的布局文件
如图明显是三个TextView和一个ImageView(可以动态生成)
二、总的布局文件
如图上面是一个TextView(全球最著名的人物列表),下面是一个ListView
三、编写自己的MyAdapter,继承BaseAdapter
public class MyAdapter extends BaseAdapter {
private List<Person> person; // 要显示的数据 通过Activity传过来
Context context; // 上下文
public MyAdapter(Context context, List<Person> person) {
this.person = person;
this.context = context;
}
@Override
public int getCount() // 获取数据集合的大小 确定listView的条目
{
return (person == null) ? 0 : person.size();
}
@Override
public Object getItem(int position) // 获取position位置上的数据
{
return person.get(position);
}
@Override
public long getItemId(int position) // 获取position位置的数据的ID
{
return position;
}
public class ViewHolder // ListView中每一个Item的View组件的结构
{
TextView textViewItem01;
TextView textViewItem02;
TextView textViewItem03;
ImageView imageView;
}
// 获取一个View展示集合中指定位置的数据
// Android ListView中每显示出一条item的时候,都会自动的调用BaseAdapter.getView(int position,
// View convertView, ViewGroup parent)方法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (null == convertView) {
convertView = LayoutInflater.from(context).inflate(R.layout.list_view_02, null); // 通过布局文件构造一个View
viewHolder = new ViewHolder(); // 每一个Item的View的结构
viewHolder.textViewItem01 = (TextView) convertView.findViewById(R.id.listView01Item01);
viewHolder.textViewItem02 = (TextView) convertView.findViewById(R.id.listView01Item02);
viewHolder.textViewItem03 = (TextView) convertView.findViewById(R.id.listView01Item03);
// 动态增加1个ImageView
viewHolder.imageView = new ImageView(context);
LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
mParams.gravity = Gravity.CENTER;
mParams.width = 50;
viewHolder.imageView.setLayoutParams(mParams);
// 这个ImageView放到ListView的第2列之后
((LinearLayout) convertView).addView(viewHolder.imageView, 2);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Person person = (Person) getItem(position);
// 把 viewHolder 中的组件初始化或者重定义
viewHolder.textViewItem01.setText(String.valueOf(person.id));
viewHolder.textViewItem02.setText(person.name);
viewHolder.textViewItem03.setText(person.address);
viewHolder.imageView.setImageResource(person.photo);
return convertView;
}
}
convertView不为空的时候,可以简化布局操作,不用再执行上述蓝色部分的代码,直接可以get出来数据。
view 的 setTag()/getTag() 这一对方法,用来设置/提取 view 的追加数据,可是任意类型。
该方法的意义:当convertView不为空的时候,可以简化布局操作,不用再执行上述蓝色部分的代码,而直接可以get出来数据。
public abstract View getView (int position, View convertView, ViewGroup parent)
函数功能
Get a View that displays the data at the specified position in the data set.
You can either create a View manually or inflate it from an XML layout file.
When the View is inflated, the parent View (GridView, ListView...) will apply default layout parameters unless you use inflate(int, android.view.ViewGroup, boolean) to specify a root view and to prevent attachment to the root.
返回值
A View corresponding to the data at the specified position.
四、Activity中设置好数据,并通过setAdapter(adapter)来显示ListView
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。