vs2008做网站教程东莞推广
vs2008做网站教程,东莞推广,wordpress 主题预览插件,有没有专门做花鸟鱼虫的网站在上一篇中#xff0c;我们说过#xff0c;在setData中如果有很多控件的话#xff0c;我们还是要在该方法中写入很多代码#xff0c;为了降低开发的方便性#xff0c;本次就在此基础上再一次优化。实现原理是这样的#xff0c;每次在setData中都要查找控件#xff0c;然…在上一篇中我们说过在setData中如果有很多控件的话我们还是要在该方法中写入很多代码为了降低开发的方便性本次就在此基础上再一次优化。实现原理是这样的每次在setData中都要查找控件然后setXXX()什么的我们可以把这写实现放如到ViewHolder中去在ViewHolder中写入一个链式的方法来帮助我们来实现功能(关于ViewHodler类的代码我就不再重复写了代码在此Android之自定义实现BaseAdapter(通用适配器一) )链式方法如下public ViewHolder setText(int viewId, String data){TextView tv getView(viewId);tv.setText(data);return this;}通过这个方法我们可以很好的去设置对应的内容只需要传一个需要设置控件的id然后传对应的数据就可以达到设置文字的效果了下面再看看我们的MyAdapter.java中的代码MyAdapter.java/*** 上一篇中的MyAdapter*/public class MyAdapter extends MyBaseAdapter {public MyAdapter(List data) {super(data);}Overridepublic void setData(ViewHolder holder, Student t) {TextView tvName holder.getView(R.id.mTv1);tvName.setText(t.getName());TextView tvSex holder.getView(R.id.mTv2);tvSex.setText(t.getSex());}}/*** 优化后的MyAdapter*/public class MyAdapter extends MyBaseAdapter {public MyAdapter(List data) {super(data);}Overridepublic void setData(ViewHolder holder, Student t) {holder.setText(R.id.mTv1, t.getName()).setText(R.id.mTv2, t.getSex());}}ok对比一下setData中的实现我们这里只用一条代码就可以代替上面的实现了这样是不是更方便呢这样的话我们的扩展就更加方便了如果说我们不仅仅只是设置文本内容而是通过图片控件设置图片呢很简单我们只需要在ViewHolder中再添加我们要实现的方法即可比如设置图片我们可以添加如下代码public ViewHolder setImageResource(int viewId,int resId){ImageView img getView(viewId);img.setImageResource(resId);return this;}public ViewHolder setImageBitmap(int viewId, Bitmap bm){ImageView img getView(viewId);img.setImageBitmap(bm);return this;}添加这两个方法后需要设置图片就很轻松了只需在setData中传递对应的参数即可Overridepublic void setData(ViewHolder holder, Student t) {holder.setText(R.id.mTv1, t.getName()).setText(R.id.mTv2, t.getSex());holder.setImageResource(R.id.img1,资源id).setImageBitmap(R.id.img2,bm);}好了一个通用的适配器就已经完成了整体框架和代码都已经实现了我将所有的代码都综合一下写在下面方便大家使用分别是MainActivity.java(主界面类负责传参设置ListView的数据)、MyAdapter.java(自定义的适配器)、MyBaseAdapter.java(通用的适配器类)、ViewHolder.java(通用的持有类对象)、以及实体类Student.javaMainActivity.javapublic class MainActivity extends AppCompatActivity{private List data;private ListView mList;MyAdapter adapter;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getData();mList (ListView) findViewById(R.id.mList);adapter new MyAdapter(data);mList.setAdapter(adapter);}private void getData() {data new ArrayList();Student stu null;for (int i 0; i 20; i) {stu new Student();stu.setName(姓名 i);stu.setSex(i % 2 0 ? 男 : 女);data.add(stu);}}}MyAdapter.javapublic class MyAdapter extends MyBaseAdapter {public MyAdapter(List data) {super(data);}Overridepublic void setData(ViewHolder holder, Student t) {holder.setText(R.id.mTv1, t.getName()).setText(R.id.mTv2, t.getSex());}}MyBaseAdapter.javapublic abstract class MyBaseAdapter extends BaseAdapter {protected List data;public MyBaseAdapter(List data){this.data data;}Overridepublic int getCount() {return data null ? 0 : data.size();}Overridepublic Object getItem(int position) {return data.get(position);}Overridepublic long getItemId(int position) {return position;}Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder ViewHolder.getHolder(convertView,parent,position, R.layout.list_item);setData(holder,data.get(position));return holder.getConvertView();}public abstract void setData(ViewHolder holder,T t);}ViewHolder.javapublic class ViewHolder {private int position;private SparseArray array;private View convertView;private Context context;private ViewHolder(ViewGroup parent, int position, int layout) {this.position position;this.context parent.getContext();convertView LayoutInflater.from(parent.getContext()).inflate(layout, null);convertView.setTag(this);array new SparseArray();}public static ViewHolder getHolder(View convertView, ViewGroup parent, int position, int layout) {if (convertView null) {return new ViewHolder(parent, position, layout);} else {ViewHolder holder (ViewHolder) convertView.getTag();holder.position position;return holder;}}public T getView(int viewId) {View view array.get(viewId);if (view null) {view convertView.findViewById(viewId);array.put(viewId, view);}return (T) view;}public View getConvertView() {return convertView;}public ViewHolder setText(int viewId, String data) {TextView tv getView(viewId);tv.setText(data);return this;}public ViewHolder setImageResource(int viewId, int resId) {ImageView img getView(viewId);img.setImageResource(resId);return this;}public ViewHolder setImageBitmap(int viewId, Bitmap bm) {ImageView img getView(viewId);img.setImageBitmap(bm);return this;}}Student.javapublic class Student {private String name;private String sex;public String getName() {return name;}public void setName(String name) {this.name name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex sex;}}以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89608.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!