关于android List 为何只能显示最后一条数据 和MenusBar-Button 与TabHost 控件的联系

2018.5.30 0.19 CZ c.~

最近在完成一个关于Android掌上课堂App的课程设计。

在阅读修改别人的代码时发现了几个常见的问题。

1.关于listView适配器显示SQLite内部数据时,遇到的查询数据放入HashMap后,查询下一条数据总会会覆盖前一条查询出的数据的问题。

       public ArrayList<HashMap<String, String>> selectEleTeaInfo()
    {
    HashMap<String, String> teaInfo=new HashMap<String, String>();
    String id="";
    String name="";
    String position="";
    String pass="";
    SQLiteDatabase db=helper.getWritableDatabase();
    Cursor cursor=db.rawQuery("select * from teachInfo where teaPosition like '%电子%'", null);
    if(cursor==null)
    {
    Toast.makeText(context,"无学生数据", Toast.LENGTH_LONG).show();
    }
    else
    {
    while(cursor.moveToNext())

    {    

                       //HashMap<String, String> teaInfo=new HashMap<String, String>();修改后的

id=cursor.getString(cursor.getColumnIndex("teaID")).trim();
    name=cursor.getString(cursor.getColumnIndex("teaName")).trim();
    position=cursor.getString(cursor.getColumnIndex("teaPosition"));
    pass=cursor.getString(cursor.getColumnIndex("teapassword"));
    teaInfo.put("teaID", id);
    teaInfo.put("teaName",name);
    teaInfo.put("teaPosition", position);
    teaInfo.put("teapassword", pass);
    tea3.add(teaInfo);
    }
    }
    cursor.close();
    db.close();
    return tea3;

    }

这样写会导致以上问题。

这个问题的关键在与HashMap的new。由于刚开始我只new了一个新的HashMap,导致在每次遍历数据时,都是把下一条新数据放入表内,且覆盖了前一条数据。解决它只需要在在每次while内new HashMap即可。

2.如何把MenusBar和TabHost的tab关联在一起。遇到的需求是:在不同的tab界面上时,点击Bar上的按钮只能弹出相应的view。

     这个问题实际上是为了解决如何确认当前tab界面,以便发送一个flag值去与Bar上的按钮进行联系。

          解决方法主要是:TabHost 内的setOnTabChangedListener()方法//根据标签的切换情况来设置myMenuSettingTag

              tabhost.setOnTabChagedListener(new OnTabChangeListener{

                      public void onTabChanged(String tabid)

                       {

                              //tab1是上面tabhost.newTabSpec("tab1")

                               if(tabid.equals("tab1"))

                                {flag=1;}

                              if(tabid.equals("tab2"))

                                 {flag=2;}

                         }                                  

                 });

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值