学了一段时间android了总感觉好多东西都记不住,所以决定写一下方便记忆;今天将好就以前写东西时用到的总结一下;希望对自己或者别人有所帮助:
今天的时一个关于自定义Adapter的使用:
public class MyAdapter extends BaseAdapter {
private Context context;
private List<Codes> list; //定义数据源容器
public MyAdapter(Context context, List<Codes> code_list) {
this.context=context; //传入主类的上下文
this.list=code_list; //传入数据源
}
@Override
public int getCount() {
return list.size(); //返回数据源的长度
}
@Override
public Object getItem(int position) {
return list.get(position); //返回数据源中编号为position的对象
}
@Override
public long getItemId(int position) {
return position; //返回数据源对象编号
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder=null; //定义一个holder,就是item中的控件的定义;
if (convertView==null){ //判断布局是否为空,如果还没有一项 那就先初始化控件
holder=new Holder();
convertView=View.inflate(context,R.layout.bianmabiao,null);
holder.textView1=(TextView)convertView.findViewById(R.id.data);
holder.textView2=(TextView)convertView.findViewById(R.id.code);
convertView.setTag(holder);
}else{
holder=(Holder)convertView.getTag();//不为空直接设置
}
holder.textView1.setText(String.valueOf(list.get(position).name));
holder.textView2.setText(String.valueOf(list.get(position).code));
return convertView;
}
}
class Holder{ //控件的类
TextView textView1;
TextView textView2;
}
另一种viewHolder的写法:
private class ViewHolder(val convertView: View) {
companion object {
fun <T : View> get(rootView: View, id: Int): T {
var viewHolder: SparseArray<View>? = rootView.tag as SparseArray<View>
if (viewHolder == null) {
viewHolder = SparseArray()
rootView.tag = viewHolder
}
var childView: View? = viewHolder[id]
if (childView == null) {
childView = rootView.findViewById(id)
viewHolder.put(id, childView)
}
return childView as T
}
}
fun <T : View> get(id: Int): T {
var viewHolder: SparseArray<View>? = convertView.tag as SparseArray<View>
if (viewHolder == null) {
viewHolder = SparseArray()
convertView.tag = viewHolder
}
var childView :View ?= viewHolder[id]
if (childView == null) {
childView = convertView.findViewById(id)
viewHolder.put(id, childView)
}
return childView as T
}
}