700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android高级控件之ListView的优化以及下拉刷新页面

Android高级控件之ListView的优化以及下拉刷新页面

时间:2021-10-17 09:55:59

相关推荐

Android高级控件之ListView的优化以及下拉刷新页面

1.ListView的优化

在优化之前我们先来说说配置器的自定义,为什么需要自定义配置器呢,因为系统自带的配置器不能满足我们的需求,所以就需要我们自己写配置器来实现功能,

但是在创建ListView时我们需要先得到两大元素:

1)数据集,即要映射的字符串、图片信息之类。

2)适配器,实现把要映射的字符串、图片信息映射成视图(如Textview、Image等组件),再添加到ListView中。

实现细节:

1.得到控件(通过控件id得到)

2.得到数据源

3.创建适配器

public class ListViewAdapter(自己定义名字) extends BaseAdapter{........} //自定义的适配器一般继承BaseAdapter类

4.通过控件设置适配器

自定义适配器后直接在设置适配器中调用就可以了

2.优化ListView

我们为什么要优化ListView,因为不优化的话,数据过多会引起数据溢出而报错,如果我们优化了的话就会减少内存的消耗,同事加快item的加载速度,

1):

重用了convertView,很大程度上的减少了内存的消耗。通过判断convertView是否为null,是的话就需要产生一个视图出来,然后给这个视图数据,最后将这个视图返回给底层。

特点:如果当前的convertView为null,则通过LayoutInflat产生一个view。

ViewCode

publicViewgetView(intposition,ViewconvertView,ViewGroupparent)

{

if(convertView==null)

{

convertView=LayoutInflater.from(context).inflate(R.layout.section_list_item1,null);

}

TextViewtv_name=(TextView)convertView.findViewById(R.id.contact_contactinfoitem_tv_name);

TextViewtv_phone=(TextView)convertView.findViewById(R.id.contact_contactinfoitem_tv_phoneNum);

ContactInfo1confo=contacts.get(position);

if(confo!=null){//toseteveryitem'stext

tv_name.setText(confo.getContactName());

tv_phone.setText(confo.getContact_Phone());

}

returnconvertView;

}

3.下拉刷新

1.要先引入刷新下拉的资源,如果没有的话可以登录,在里面搜索pull to refresh后直接下载就可以了,然后倒入项目中,让项目与资源建立联系后就可以像平时使用控件那样就可以了。步骤如下:

把你的library路径倒入后点击下一步就可以了

导入后右击你的项目

然后建立联系

然后就可以直接使用了。

public classPulltorefreshActivityextendsAppCompatActivity {privateList<String>list_map_date;privateArrayAdapteradapter_pull;privatePullToRefreshListViewptlv_main_pulltorefresh;@Overrideprotected voidonCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_pulltorefresh);ptlv_main_pulltorefresh= (PullToRefreshListView) findViewById(R.id.ptlv_main_pulltorefresh);//定义数据list_map_date=newArrayList<>();for(inti = 0; i <=20 ; i++) {list_map_date.add("哈思顿"+i);}//创建适配器adapter_pull=newArrayAdapter(this,android.R.layout.simple_list_item_1,list_map_date);ptlv_main_pulltorefresh.setAdapter(adapter_pull);ptlv_main_pulltorefresh.setOnRefreshListener(newPullToRefreshBase.OnRefreshListener2<ListView>() {@Overridepublic voidonPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {Toast.makeText(PulltorefreshActivity.this,"刷新页面了", Toast.LENGTH_SHORT).show();newMyTask().execute();}@Overridepublic voidonPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {}});}classMyTaskextendsAsyncTask{@OverrideprotectedObject doInBackground(Object[] objects) {for(inti = 0; i <4; i++) {list_map_date.add(0,"haha"+i);try{Thread.sleep(1000);}catch(InterruptedException e) {e.printStackTrace();}}return null;}@Overrideprotected voidonPostExecute(Object o) {adapter_pull.notifyDataSetChanged();ptlv_main_pulltorefresh.onRefreshComplete();super.onPostExecute(o);}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。