ListView封装
来源:互联网 发布:javascript 电子书 编辑:程序博客网 时间:2024/06/08 00:13
ListView封装
直接上代码。
Adapter的封装
package com.jackeysun.touchpullview;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import java.util.ArrayList;import java.util.List;/** * Created by jackey on 2017/7/23. */public abstract class AbsAdapter<T, H extends AbsViewHolder> extends BaseAdapter { protected List<T> mDatas; protected Context mContext; protected LayoutInflater mLayoutInflater; protected int layoutId; protected H holder; public AbsAdapter(Context context, int layoutId) { this.mContext = context; this.mDatas = new ArrayList<>(); this.layoutId = layoutId; this.mLayoutInflater = LayoutInflater.from(context); } protected void setItem(List<T> mDatas) { this.mDatas.clear(); for (T data : mDatas) { this.mDatas.add(data); } this.notifyDataSetChanged(); } protected void addItems(List<T> mDatas) { for (T data : mDatas) { addItem(data); } this.notifyDataSetChanged(); } private void addItem(T data) { mDatas.add(data); } @Override public int getCount() { return mDatas == null ? 0 : mDatas.size(); } @Override public Object getItem(int i) { return mDatas.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { holder = null; if (view == null) { holder = newViewHolder(); view = mLayoutInflater.inflate(layoutId, null); view.setTag(holder); } else { holder = (H) view.getTag(); } holder.initItemView(view); initData(mDatas.get(i), holder); return view; } protected abstract void initData(T datas, H holder); public abstract H newViewHolder();}
ViewHolder的封装
package com.jackeysun.touchpullview;import android.view.View;/** * Created by jackey on 2017/7/23. */public abstract class AbsViewHolder { public abstract void initItemView(View containerView);}
使用方式
package com.jackeysun.touchpullview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView listView;private MyAdapter adapter;private List<String> datas;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView); adapter = new MyAdapter(MainActivity.this, R.layout.item); listView.setAdapter(adapter);}public void click(View view){ datas = new ArrayList<>(); for (int i = 0; i < 10; i++) { datas.add(new String("第" + i + "项")); } adapter.setItem(datas);}
}
package com.jackeysun.touchpullview;import android.content.Context;/** * Created by jackey on 2017/7/23. */public class MyAdapter extends AbsAdapter<String, MyViewHolder> { public MyAdapter(Context context, int layoutId) { super(context, layoutId); } @Override protected void initData(String datas, MyViewHolder viewHolder) { viewHolder.textView.setText(datas); } @Override public MyViewHolder newViewHolder() { return new MyViewHolder(); }}
package com.jackeysun.touchpullview;import android.view.View;import android.widget.TextView;/** * Created by jackey on 2017/7/23. */public class MyViewHolder extends AbsViewHolder { protected TextView textView; public MyViewHolder() { } @Override public void initItemView(View containerView) { textView = (TextView) containerView.findViewById(R.id.textView); }}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.jackeysun.touchpullview.MainActivity"> <Button android:layout_width="match_parent" android:layout_height="48dp" android:onClick="click" android:text="显示数据"/> <ListView android:id="@+id/listView" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:divider="#999" android:dividerHeight="1dp"></ListView></LinearLayout>
阅读全文
0 0
- ListView封装
- ListView封装
- 封装listview分页加载
- Listview的适配器封装
- Android ListView封装类
- listview的封装使用
- ListView的高级封装
- listview封装处理
- Android ListView封装
- ListView 通用Adapter封装
- ListView中数据的封装
- Android---封装ListView的Adapter
- ListView 及Recyclerview的封装
- ListView之ViewHolder类封装
- ListView 优化之ViewHolder封装
- ListView多布局Adapter封装
- ListView的优化以及数据封装
- Android之ListView的高级封装!
- 第一次用Apache Commons CSV
- PAT 1051复数乘法
- 窗口与控件关联的方式:
- JVM(三)—垃圾回收算法及垃圾收集器
- Robberies
- ListView封装
- H
- dbutils的update方法与query方法的内部实现
- Moving Averages(7):Conclusions
- Java学习笔记之JavaWeb-EL表达式
- 持续集成主流工具介绍
- Server Tomcat v7.0 Server at localhost failed to start.错误可能原因
- MFC Socket网络编程之TCP服务器端
- 写一个函数判断机子大小端的问题