关于listview求助

红豆爱丸子彡 2014-10-28 10:46:01
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();
}
}
结果:
如图,只显示了最后一行数据
新手求教
...全文
91 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
红豆爱丸子彡 2014-10-28
  • 打赏
  • 举报
回复
引用 4 楼 CHONGWENYI 的回复:
你这里 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,这样加载的肯定是最后一条数据,把之前的覆盖掉了
---貌似复制复制多了一行--谢谢你了
manxiSafe 2014-10-28
  • 打赏
  • 举报
回复
引用 4 楼 CHONGWENYI 的回复:
你这里 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,这样加载的肯定是最后一条数据,把之前的覆盖掉了
顶!
CHONGWENYI 2014-10-28
  • 打赏
  • 举报
回复
你这里 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,这样加载的肯定是最后一条数据,把之前的覆盖掉了
红豆爱丸子彡 2014-10-28
  • 打赏
  • 举报
回复
引用 2 楼 hjywyj 的回复:

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;
}
什么错额
  • 打赏
  • 举报
回复

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;
}
红豆爱丸子彡 2014-10-28
  • 打赏
  • 举报
回复

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧