package com.ali.fridge.supermarket.module;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView; import com.ali.fridge.R;
import com.ali.fridge.util.LogUtils; import java.util.List; import static com.ali.fridge.util.LogUtils.makeLogTag; /**
* Created by xiaomin.wxm on 2016/4/7.
*/
public class MyArrayAdapter extends ArrayAdapter<String> { private static final String TAG = makeLogTag(MyArrayAdapter.class);
private Context mContext;
private List<String> mString;
private LayoutInflater mInflater;
private boolean mFirst = true;
private int mNowItemSelected;
private MyViewHolder holder; public MyArrayAdapter(Context context, int textViewResourceId, List<String> aStrings) {
super(context, textViewResourceId, aStrings);
mString = aStrings;
mContext = context;
/*if (mString == null) {
mString = new ArrayList<>();
mString.add("推荐");
}*/
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
holder = new MyViewHolder();
mInflater = LayoutInflater.from(mContext);
convertView = mInflater.inflate(R.layout.goods_item_onecategory, null);
holder.categoryName = (TextView) convertView.findViewById(R.id.goods_tv_category);
holder.ivVerticalBar = (ImageView) convertView.findViewById(R.id.goods_img_category_selector);
convertView.setTag(holder);
} else {
holder = (MyViewHolder) convertView.getTag();
}
holder.categoryName.setText(mString.get(position));
if (position == mNowItemSelected) {
holder.ivVerticalBar.setVisibility(View.VISIBLE);
} else {
holder.ivVerticalBar.setVisibility(View.GONE);
}
return convertView;
} public void setNewData(List<String> aStrings) {
LogUtils.LOGD(TAG, "setNewData begin");
clear();
mString = aStrings;
/*if (mString == null) {
mString = new ArrayList<>();
mString.add("推荐");
}*/
if (mString != null) {
for (int i = 0; i < mString.size(); i++) {
insert(mString.get(i), i);
}
}
notifyDataSetChanged();
LogUtils.LOGD(TAG, "setNewData end");
} /*
index : selectitem index <0 means not selected
*/
public void setSelected(int index) {
mNowItemSelected = index;
notifyDataSetChanged();
} private class MyViewHolder {
TextView categoryName;
ImageView ivVerticalBar;
}
}

MyArrayAdapter 比较标准的写法的更多相关文章

  1. MSSQL 标准PROC 写法

    MSSQL 标准PROC 写法 ALTER PROC [dbo].[usp_ADM_InsertFlowSortInfo]@FlowSortName NVARCHAR(50),AS/*PAGE: 分类 ...

  2. try catch finally 关闭流标准的写法

    平常开发中,都知道要在finlly里关闭流,但是有时finlly里代码不当,会引起另外的异常. 以下是看struts2源代码看到的,随手记录下. 有两点注意: (1)判断流是否为空. (2)filly ...

  3. Java 标准DBUtil 写法

    package xueruan.com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql ...

  4. jquery Ajax标准规范写法

    $.ajax({ url:"http://www.xxx",//请求的url地址 dataType:"json",//返回的格式为json async:true ...

  5. ViewHolder的标准写法

    最标准的写法,就是为每一个AdapterView的子View新建一个对应的ViewHolder,同时声明为prtivate final static.ViewHolder类中定义各种成员变量. pub ...

  6. 从IntToHex()说起,栈/堆地址标准写法 good

    学习中的一些牢骚.栈/堆地址标准写法. 2017-02-12 • 杂谈 • 暂无评论 • 老衲 •浏览 226 次 我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件.下面是我的写法,如果 ...

  7. (转)Css样式兼容IE6,IE7,FIREFOX的写法

    根据FF和IE对一些符号识别的差异,我们可以单独对FF以及IE定义样式,例子: 区别IE6与FF:          background:orange;*background:blue;   区别I ...

  8. node.js 标准/错误输出 和 process.exit

    node.js中,各种模块有一种标准的写法: this._process.exec(command, options, function (err, stdout, stderr) { callbac ...

  9. Css样式兼容IE6,IE7,FIREFOX的写法

    根据FF和IE对一些符号识别的差异,我们可以单独对FF以及IE定义样式,例子: 区别IE6与FF:          background:orange;*background:blue;   区别I ...

随机推荐

  1. jQuery Cycle Plugin的使用

    jQuery幻灯片效果或者Slideshow效果当中如果不考虑touch效果的话,jQuery Cycle插件实在是太强大了,各种高大上的动画效果,如果想加上touch效果可以结合本blog介绍的wi ...

  2. BZOJ4631 : 踩气球

    将所有盒子插入链表,每当一个盒子变空时,从链表里删去它. 查一下它的前驱后继$pre,nxt$,那么$[pre+1,nxt-1]$都是空的. 每次对于$[A,B]$这段都为空,对小朋友按$R$维护线段 ...

  3. BZOJ4231 : 回忆树

    一个长度为$|S|$的串在树上匹配有两种情况: 1.在LCA处转弯,那么这种情况只有$O(|S|)$次,暴力提取出长度为$2|S|$的链进行KMP即可. 2.不转弯,那么可以拆成两个到根路径的询问. ...

  4. [深入浅出WP8.1(Runtime)]数据绑定的基础

    11.1 数据绑定的基础 数据绑定是一种XAML界面和后台数据通信的方式,因为界面和后台数据的通信的场景有多种,并且数据于数据之间也存在着不一样的关联关系,所以数据绑定的实现技巧和方式也是多种多样的. ...

  5. java8 引进lamda

    就像泛型能使开发人员对数据类型进行抽象,Lambda的目的是让程序员能够对程序行为进行抽象. 你可以这样想,它能够让程序员把一段程序代码当做数据一样使用.一个方法可以像定义和使用一个变量那样的方式被定 ...

  6. iOS 网络框架编写总结

    一,常用 1> 不错的处理接收到的网络图片数据的方法 id img= ISNSNULL(pic)?nil:[pic valueForKey:@"img"]; NSString ...

  7. [奇葩 bug]视图在 ipad5 上正常显示,在 iPad3上超出了边界

    一,问题分析 1.理论上 iPad 是按像素点排列的,可 iPad5为什么和 iPad3差别那么大??? 2.iPad3超出边界的视图,都有一个 leading 是superview 的 leadin ...

  8. thinkphp遗留问题

    $data = array( 'username' => I('username','','htmlspecialchars'), 'content' => I('content'), ' ...

  9. Java_Java SE6调用动态编译

    转自:http://www.cnblogs.com/flyoung2008/archive/2011/11/14/2249017.html 一.使用JavaCompiler接口编译java源程序 我们 ...

  10. javascrit2.0完全参考手册(第二版) 第2章第1节 基本定义

    在这里,我们介绍一些将要使用的编程语言术语.表2-1提供了精确定义的概念. Table 2-1: 编程语言的基本术语 名字 定义 例子 Token令牌 最小的不可分割的词汇的语言单位.一个连续的字符序 ...