Android(安卓)Listview不同item不同内容
16lz
2022-04-24
实现的界面如下:三种类型
MainActivity.java:
public class MainActivity extends Activity {private final int TYPE_SWITCH = 0;private final int TYPE_SEEKBAR = 1;private final int TYPE_BUTTON = 2;private static final String[] led_opt={"江苏","广州","新疆","台湾"};private static final String[] led_optContext={"华东地区","位于东南沿海","一个遥远的地方","隔海相望"};List<Map<String, Object>> mData = new ArrayList<Map<String, Object>>();MyAdapter listAdapter ;@Overrideprotected void onCreate(Bundle savedInstanceState) {//setTheme(16974123); super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);{ListView lv = (ListView) this.findViewById(R.id.listview_home); Map<String, Object> map;/** 电源开关*/ map = new HashMap<String, Object>();map.put("img",R.drawable.power_ico_50dp);map.put("title",led_opt[0]);map.put("info",led_optContext[0]); mData.add(map); map = new HashMap<String, Object>();map.put("img",R.drawable.white_ico_50dp);map.put("title",led_opt[1]);map.put("info",led_optContext[1]); mData.add(map);map = new HashMap<String, Object>();map.put("img",R.drawable.rgb_ico_50dp);map.put("title",led_opt[2]);map.put("info",led_optContext[2]); mData.add(map);map = new HashMap<String, Object>();map.put("img",R.drawable.dream_ico_50dp);map.put("title",led_opt[3]);map.put("info",led_optContext[3]); mData.add(map);listAdapter = new MyAdapter(this); lv.setAdapter(listAdapter);} }
/** * 自定义一个Adapter(实现了ListAdapter接口) * * @author Administrator * */ class MyAdapter extends BaseAdapter{ LayoutInflater inflater = null; public MyAdapter(Context context) { this.inflater = LayoutInflater.from(context); //inflater =(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { // TODO Auto-generated method stub return mData.size();} //每个convert view都会调用此方法,获得当前所需要的view样式 @Override public int getItemViewType(int position) { // TODO Auto-generated method stub int p = position%4; if(p == 0) return TYPE_SWITCH; else if(p == 1) return TYPE_SEEKBAR; else if(p == 2) return TYPE_SEEKBAR; else if(p == 3) return TYPE_BUTTON; else return 0; } @Override public int getViewTypeCount() { // TODO Auto-generated method stub return 3; } @Override public Object getItem(int position) { // TODO Auto-generated method stub //return mData.get(arg0); return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub viewHolder_switch holder_switch = null; viewHolder_seekbar holder_seekbar = null; viewHolder_button holder_button = null; int type = getItemViewType(position); if (convertView == null) { Log.e("convertView = ", " NULL"); switch(type) { case TYPE_SWITCH: holder_switch = new viewHolder_switch(); convertView = inflater.inflate(R.layout.listview_switch_row, parent, false); // convertView = inflater.inflate(R.layout.listview_switch_row,null); // holder_switch.img = (ImageView)convertView.findViewById(R.id.img_sw); holder_switch.title = (TextView)convertView.findViewById(R.id.title_sw); holder_switch.info = (TextView)convertView.findViewById(R.id.info_sw); Log.e("convertView = ", "NULL TYPE_SWITCH"); convertView.setTag(holder_switch); break; case TYPE_SEEKBAR: convertView = inflater.inflate(R.layout.listview_seekbar_row, parent, false); holder_seekbar = new viewHolder_seekbar(); holder_seekbar.img = (ImageView)convertView.findViewById(R.id.img_sb); holder_seekbar.title = (TextView)convertView.findViewById(R.id.title_sb); holder_seekbar.info = (TextView)convertView.findViewById(R.id.info_sb); Log.e("convertView = ", "NULL TYPE_SEEKBAR"); convertView.setTag(holder_seekbar); break; case TYPE_BUTTON: convertView = inflater.inflate(R.layout.listview_button_row, parent, false); holder_button = new viewHolder_button(); holder_button.img = (ImageView)convertView.findViewById(R.id.img_btn); holder_button.title = (TextView)convertView.findViewById(R.id.title_btn); holder_button.info = (TextView)convertView.findViewById(R.id.info_btn); Log.e("convertView = ", "NULL TYPE_BUTTON"); convertView.setTag(holder_button); break; } }else{ //有convertView,按样式,取得不用的布局 switch(type) { case TYPE_SWITCH: holder_switch = (viewHolder_switch) convertView.getTag(); Log.e("convertView !!!!!!= ", "NULL TYPE_SWITCH"); break; case TYPE_SEEKBAR: holder_seekbar = (viewHolder_seekbar) convertView.getTag(); Log.e("convertView !!!!!!= ", "NULL TYPE_SEEKBAR"); break; case TYPE_BUTTON: holder_button = (viewHolder_button) convertView.getTag(); Log.e("convertView !!!!!!= ", "NULL TYPE_BUTTON"); break; } } //设置资源 switch(type) { case TYPE_SWITCH: holder_switch.img.setBackgroundResource((Integer)mData.get(position).get("img")); holder_switch.title.setText((String)mData.get(position).get("title")); holder_switch.info.setText((String)mData.get(position).get("info")); //holder_switch.Switch.setChecked(true); break; case TYPE_SEEKBAR: holder_seekbar.img.setBackgroundResource((Integer)mData.get(position).get("img")); holder_seekbar.title.setText((String)mData.get(position).get("title")); holder_seekbar.info.setText((String)mData.get(position).get("info")); break; case TYPE_BUTTON: holder_button.img.setBackgroundResource((Integer)mData.get(position).get("img")); holder_button.title.setText((String)mData.get(position).get("title")); holder_button.info.setText((String)mData.get(position).get("info")); break; } return convertView; } } //各个布局的控件资源 class viewHolder_switch{ /** 布局ID */ public int layoutID; /** 图片ID */ public ImageView img; /** 标题 */ public TextView title; /** 内容 */ public TextView info; /* switch*/ public Switch Switch; } class viewHolder_seekbar{ /** 布局ID */ public int layoutID; /** 图片ID */ public ImageView img; /** 标题 */ public TextView title; /** 内容 */ public TextView info; public SeekBar sb; } class viewHolder_button { private int layoutID; private ImageView img; /** 标题 */ private TextView title; /** 内容 */ private TextView info; /** 按钮名称 */ private Button button; } }
更多相关文章
- android 通过HttpPost 调用.Net Wcf
- 【android开发】android操作文件
- Android(安卓)全屏无标题详解
- Android改变标题栏背景和文字颜色
- 自定义Android标题栏
- android具有折叠效果的控件
- Android实现分享和接收分享内容
- Android获取高清app图标代码分享
- Android(安卓)4.0 创建AVD报错