当前位置: 代码迷 >> Android >> 关于listview
  详细解决方案

关于listview

热度:54   发布时间:2016-04-28 03:51:54.0
关于listview求助
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,这样加载的肯定是最后一条数据,把之前的覆盖掉了
  相关解决方案