多种形式的ListView案例
来源:互联网 发布:淘宝销售说明 编辑:程序博客网 时间:2024/06/04 17:53
public class MainActivity extends Activity {
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
MyAdapter adapter = new MyAdapter();
adapter.addSecondItem("无线和网络");
adapter.addNormalItem("无线", R.drawable.ic_launcher);
adapter.addNormalItem("网络", R.drawable.ic_launcher);
adapter.addSecondItem("设备");
adapter.addNormalItem("声音", R.drawable.ic_launcher);
adapter.addNormalItem("存储", R.drawable.ic_launcher);
adapter.addNormalItem("haha", R.drawable.ic_launcher);
lv.setAdapter(adapter);
}
class MyAdapter extends BaseAdapter{
private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
private Set<Integer> set = new TreeSet<Integer>();
private final int NORMAL_TYPE = 0;
private final int SECOND_TYPE = 1;
public void addNormalItem(String content,int imgId){
Map<String, Object> map = new TreeMap<String, Object>();
map.put("title", content);
map.put("logo", imgId);
list.add(map);
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
int type = set.contains(position)?SECOND_TYPE:NORMAL_TYPE;
return type;
}
public void addSecondItem(String content){
Map<String, Object> map = new TreeMap<String, Object>();
map.put("title", content);
map.put("logo", R.drawable.ic_launcher);
list.add(map);
set.add(list.size()-1);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vHolder = null;
if(convertView==null){
vHolder = new ViewHolder();
int type = getItemViewType(position);
switch (type) {
case NORMAL_TYPE:
convertView = getLayoutInflater().inflate(R.layout.normal_item, null);
vHolder.iv_logo = (ImageView) convertView.findViewById(R.id.iv_normal);
vHolder.tv_title = (TextView) convertView.findViewById(R.id.tv_normal);
break;
case SECOND_TYPE:
convertView = getLayoutInflater().inflate(R.layout.second_item, null);
vHolder.tv_title = (TextView) convertView.findViewById(R.id.tv_second);
break;
}
convertView.setTag(vHolder);
}else{
vHolder = (ViewHolder) convertView.getTag();
}
Map<String, Object> map = list.get(position);
vHolder.tv_title.setText(map.get("title").toString());
if(!set.contains(position)){
vHolder.iv_logo.setImageResource(Integer.parseInt(map.get("logo").toString()));
}
return convertView;
}
}
class ViewHolder{
TextView tv_title;
ImageView iv_logo;
}
}
- 多种形式的ListView案例
- listview多种形式item
- 多种形式的for循环
- 输出分数的多种形式
- 多种布局的ListView
- ListView的多种ViewType
- Lucene的多种高级搜索形式
- iOS-OC调用JS的多种形式
- 关于回调callback的多种形式
- Oracle select读的多种形式
- ListView多种布局的优化
- Android 多种ViewType的ListView
- ListView的多种行视图
- ListView 多种Item的加载
- ListView加载多种的样式
- ListView的几种形式
- ListView的几种形式
- Android Dialog的多种对话框整理案例
- 学习深度神经网络的几个博客和网站介绍
- 测试人员分类
- JSTL 格式化时间戳
- C/C++中字符的基本操作
- 【STP】生成树协议习题案例
- 多种形式的ListView案例
- UVA 1363
- iOS大典之地图Core Location
- c#,使用WPF实现iPhone的短信框效果
- 数据结构实践——广义表的原子统计
- Thinkphp项目的搭建
- 对软件测试前景的个人理解
- 【STP】STP(802.1D)端口状态及拓扑变更
- HDOJ 1849 Rabbit and Grass(尼姆博奕)