xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/list_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24dp"
android:layout_centerVertical="true" />
<ImageView android:id="@+id/list_radioImg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"/>
</RelativeLayout>
代码:
public class SchoolMainActivity extends ListActivity {
private int balanceIndex = 0;
SimpleAdapter adapter;
List<Map<String, Object>> list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter= new SimpleAdapter(this,getData(),R.layout.array_item,new String[]{"text","img"},new int[]{R.id.list_text,R.id.list_radioImg});
setListAdapter(adapter);
}
private List<Map<String, Object>> getData(){
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map_xsgl = new HashMap<String, Object>();
map_xsgl.put("text", "学生管理");
map_xsgl.put("img", R.drawable.on);
list.add(map_xsgl);
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map_jsgl = new HashMap<String, Object>();
map_jsgl.put("text", "教师管理");
map_jsgl.put("img", R.drawable.off);
list.add(map_jsgl);
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map_xxck = new HashMap<String, Object>();
map_xxck.put("text", "信息查看");
map_xxck.put("img", R.drawable.off);
list.add(map_xxck);
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map_bjgn = new HashMap<String, Object>();
map_bjgn.put("text", "报警功能");
map_bjgn.put("img", R.drawable.off);
list.add(map_bjgn);
return list;
}
protected void onListItemClick(ListView arg0, View arg1, int arg2, long arg3) {
Toast t = Toast.makeText(this, ""+list.get(arg2).get("text"), Toast.LENGTH_LONG);
t.show();
ChangeRadioImg(balanceIndex,false);
ChangeRadioImg(arg2,true);
balanceIndex=arg2;
list.get(arg2).get("text");
}
private void ChangeRadioImg(int selectedItem, boolean b) {
SimpleAdapter la = adapter;
HashMap<String, Object> map = (HashMap<String, Object>)la.getItem(selectedItem);
if(b)
{
map.put("img", R.drawable.on);
}
else
{
map.put("img", R.drawable.off);
}
la.notifyDataSetChanged();
}
}
结果:
如图,只显示了最后一行数据
新手求教
------解决思路----------------------
private List<Map<String, Object>> getData(){
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map_xsgl = new HashMap<String, Object>();
map_xsgl.put("text", "学生管理");
map_xsgl.put("img", R.drawable.on);
list.add(map_xsgl);
Map<String, Object> map_jsgl = new HashMap<String, Object>();
map_jsgl.put("text", "教师管理");
map_jsgl.put("img", R.drawable.off);
list.add(map_jsgl);
Map<String, Object> map_xxck = new HashMap<String, Object>();
map_xxck.put("text", "信息查看");
map_xxck.put("img", R.drawable.off);
list.add(map_xxck);
Map<String, Object> map_bjgn = new HashMap<String, Object>();
map_bjgn.put("text", "报警功能");
map_bjgn.put("img", R.drawable.off);
list.add(map_bjgn);
return list;
}
------解决思路----------------------
你这里
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map_xsgl = new HashMap<String, Object>();
map_xsgl.put("text", "学生管理");
map_xsgl.put("img", R.drawable.on);
list.add(map_xsgl);
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map_jsgl = new HashMap<String, Object>();
map_jsgl.put("text", "教师管理");
map_jsgl.put("img", R.drawable.off);
list.add(map_jsgl);
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map_xxck = new HashMap<String, Object>();
map_xxck.put("text", "信息查看");
map_xxck.put("img", R.drawable.off);
list.add(map_xxck);
list = new ArrayList<Map<String, Object>>();
Map<String, Object> map_bjgn = new HashMap<String, Object>();
map_bjgn.put("text", "报警功能");
map_bjgn.put("img", R.drawable.off);
list.add(map_bjgn);
每次都new肯定是只有最后一个了,你这不应该是new ,应该创建一个全局变量的list,然后使用list.add()方法把数据加进去,而不是每次都new,这样加载的肯定是最后一条数据,把之前的覆盖掉了