在android列表视图中向下滚动时出现***Exception
Posted
技术标签:
【中文标题】在android列表视图中向下滚动时出现***Exception【英文标题】:***Exception when scroll to down in android list view 【发布时间】:2012-01-23 17:45:26 【问题描述】:我有一个标签主机,哇内容又是标签主机。 主选项卡主机是第一位的,所有内容都显示在第一位。 在第二个选项卡主机中,我有一个选项卡活动,其内容是列表视图。 当我向下滚动时,第二个列表视图崩溃并显示消息:
12-19 18:00:59.262: E/androidRuntime(1296): 致命异常: main 12-19 18:00:59.262: E/AndroidRuntime(1296): java.lang.***Error 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.text.Styled.measureText(Styled.java:430) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.text.Layout.measureText(Layout.java:1655) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.text.Layout.getLineMax(Layout.java:689) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.text.Layout.draw(Layout.java:340) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.text.BoringLayout.draw(BoringLayout.java:365) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.widget.TextView.onDraw(TextView.java:4050) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6740) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1638) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.buildDrawingCache(View.java:6502) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.getDrawingCache(View.java:6288) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1565) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.widget.AbsListView.dispatchDraw(AbsListView.java:1365) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.widget.ListView.dispatchDraw(ListView.java:3046) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6846) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.widget.AbsListView.draw(AbsListView.java:2257) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.widget.FrameLayout.draw(FrameLayout.java:352) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1638) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1638) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1638) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.widget.FrameLayout.draw(FrameLayout.java:352) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.widget.FrameLayout.draw(FrameLayout.java:352) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1638) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1638) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1638) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1638) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.widget.FrameLayout.draw(FrameLayout.java:352) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.drawChild(ViewGroup.java:1640) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.View.draw(View.java:6743) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.widget.FrameLayout.draw(FrameLayout.java:352) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1842) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewRoot.draw(ViewRoot.java:1407) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewRoot.performTraversals(ViewRoot.java:1163) 12-19 18:00:59.262: E/AndroidRuntime(1296): 在 android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 12-19 18:00:59.262: E/AndroidRuntime(1296): at android.os.Handler.dispatchMessage(Handler.java:99)
这里我使用列表视图
公共类排名扩展 Activity 实现 OnItemClickListener @覆盖 公共无效 onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.standings_layout); CompetitionCommand compCmd = new CompetitionCommand(); ArrayList 团队 = compCmd.getTeams(); ListView newsListView = (ListView) findViewById(R.id.lv_standings); 排名列表适配器适配器 = 新排名列表适配器(此,团队); newsListView.setAdapter(适配器); 适配器.notifyDataSetChanged(); newsListView.invalidate(); newsListView.setOnItemClickListener(this); 公共类 StandingsListAdapter 扩展 BaseAdapter 私人 LayoutInflater mInflater; 私有 ArrayList 团队; 公共排名列表适配器(上下文上下文,ArrayList aTeams) this.mInflater = LayoutInflater.from(context); this.teams=aTeams; 公共 int getCount() 返回 team.size(); 公共对象getItem(int位置) 返回位置; public long getItemId(int position) 返回位置; public View getView(int position, View convertView, ViewGroup parent) ViewHolder 支架; 团队团队 = teams.get(position); 如果(转换视图 == 空) convertView = mInflater.inflate(R.layout.list_stand_row, null); 持有人 = 新的 ViewHolder(); holder.st_place = (TextView) convertView.findViewById(R.id.tv_team_place); holder.st_team_name = (TextView) convertView.findViewById(R.id.tv_team_name); holder.st_played= (TextView) convertView.findViewById(R.id.tv_team_played); holder.st_won= (TextView) convertView.findViewById(R.id.tv_team_won); holder.st_drawn = (TextView) convertView.findViewById(R.id.tv_team_drawn); holder.st_lost= (TextView) convertView.findViewById(R.id.tv_team_lost); holder.st_goals_for= (TextView) convertView.findViewById(R.id.tv_team_goals_for); holder.st_goals_against= (TextView) convertView.findViewById(R.id.tv_team_goals_against); holder.st_points =(TextView) convertView.findViewById(R.id.tv_team_points); convertView.setTag(holder); 别的 持有人 = (ViewHolder)convertView.getTag(); holder.st_place.setText(team.getPlace()); holder.st_team_name.setText(team.getTeam_name()); holder.st_played.setText(team.getPlayed()); holder.st_won.setText(team.getWon()); holder.st_drawn.setText(team.getDrawn()); holder.st_lost.setText(team.getLost()); holder.st_goals_for.setText(team.getGoals_for()); holder.st_goals_against.setText(team.getGoals_against()); holder.st_points.setText(team.getPoints()); 返回转换视图; 静态类 ViewHolder TextView st_team_name; 文本视图st_place; TextView st_played; 文本视图 st_won; 文本视图 st_drawn; 文本视图 st_lost; TextView st_points; 文本视图 st_goals_for; 文本视图 st_goals_against; TextView st_points_deduction;【问题讨论】:
有什么更新吗?解决了吗?我在这里有同样的问题。我的布局很简单。嵌套的线性布局被更简单的相对布局等取代。我不知道我在代码上做错了什么。有人可以帮忙吗? 【参考方案1】:只需检查您为列表视图弹出的布局。如果您使用嵌套的线性布局,那么可能会出现这种问题。首选相对布局。哪个通胀更快。
也请阅读this。
【讨论】:
最有趣的是,如果我将第二个活动设置为 tabhost 的意图,则可以正常工作,滚动等。请帮忙! 可能是我在主标签主机中填充了这么多视图? 可能是。您能否提供更多信息让我们为您提供帮助。您提供的信息对于掌握您的问题非常基本。提及更多细节,例如列表视图的整个 xml 代码和主 xml。以及你如何夸大你的观点等等...... 现在看或告诉我如何上传xml内容【参考方案2】:你的 R.layout.standings_layout 必须是其他很多 LinearLayouts
【讨论】:
以上是关于在android列表视图中向下滚动时出现***Exception的主要内容,如果未能解决你的问题,请参考以下文章