下面是根据大家的意见修改的。没有大改。 实现的界面如下:三种类型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={ "华东地区","位于东南沿海","一个遥远的地方","隔海相望" };
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;
谢谢。上面已经改了,但是如何建一个ArrayList<> 是什么类型的才可以把这三种不同类型的都放进入?
请知道的人指点一下。
同时这getView的时候,区分这三种Item,分别加载不同的xml文件即可。
是的,现在就是这个样子,现在主要是如何在Activity中显示的问题。
只是见到例子用perferenceActivity,那个seekbar不能拖动,也不能在本页面添加大图片,所以就没有用。
int resId;
......
......
}
我那个例子跟你那个写法有什么不同吗?
就改进了 viewHolder_switch viewHolder_seekbar 等,你那种写法每个不同的列表项都要定义一个viewHolder。我搞了一个ViewHolder适合所有的不同的列表项另外增加了一个类ListItem(封装了一个Map及mType),为的就是解决“如何建一个ArrayList<> 是什么类型的才可以把这三种不同类型的都放进入”
实现的界面如下:三种类型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 ;
@Override
protected 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;
}
}