簡體   English   中英

在Android列表視圖中向下滾動時出現StackoverflowException

[英]StackoverflowException when scroll to down in android list view

我有一個標簽托管者,哇,內容又是標簽托管者。 主選項卡主機位於第一位,所有內容均位於第一位。 在第二個選項卡主機中,我具有一個tabactivity,其內容為列表視圖。 當我向下滾動到第二個列表視圖時,出現消息崩潰:

12-19 18:00:59.262: E/AndroidRuntime(1296): FATAL EXCEPTION: main
12-19 18:00:59.262: E/AndroidRuntime(1296): java.lang.StackOverflowError
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.text.Styled.measureText(Styled.java:430)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.text.Layout.measureText(Layout.java:1655)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.text.Layout.getLineMax(Layout.java:689)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.text.Layout.draw(Layout.java:340)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.text.BoringLayout.draw(BoringLayout.java:365)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.widget.TextView.onDraw(TextView.java:4050)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6740)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.buildDrawingCache(View.java:6502)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.getDrawingCache(View.java:6288)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1565)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.widget.AbsListView.dispatchDraw(AbsListView.java:1365)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.widget.ListView.dispatchDraw(ListView.java:3046)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6846)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.widget.AbsListView.draw(AbsListView.java:2257)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.View.draw(View.java:6743)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1842)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewRoot.draw(ViewRoot.java:1407)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1163)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
12-19 18:00:59.262: E/AndroidRuntime(1296):     at android.os.Handler.dispatchMessage(Handler.java:99)

在這里我使用一個列表視圖

public class Standings extends Activity implements OnItemClickListener {


    @Override
     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.standings_layout);

            CompetitionCommand compCmd = new CompetitionCommand();
            ArrayList teams = compCmd.getTeams();


            ListView newsListView = (ListView) findViewById(R.id.lv_standings);

            StandingsListAdapter adapter = new StandingsListAdapter(this,teams);
            newsListView.setAdapter(adapter);   
            adapter.notifyDataSetChanged();
            newsListView.invalidate();
            newsListView.setOnItemClickListener(this);


    }
public class StandingsListAdapter extends BaseAdapter {



     private LayoutInflater mInflater;
     private ArrayList teams;

     public StandingsListAdapter(Context context,ArrayList aTeams) 
     {
            this.mInflater = LayoutInflater.from(context);
            this.teams=aTeams;
     }

     public int getCount() 
     {
         return teams.size();
     }

     public Object getItem(int position) 
     {
         return position;
     }

     public long getItemId(int position) 
     {
         return position;
     }


     public View getView(int position, View convertView, ViewGroup parent) 
     {


         ViewHolder holder;

         Team team = teams.get(position);

         if (convertView == null) 
         {
             convertView = mInflater.inflate(R.layout.list_stand_row, null);
             holder = new 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);
         }
         else 
         {
             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());


         return convertView;
     }



        static class ViewHolder 
        {
                 TextView st_team_name;
                 TextView st_place;
                 TextView st_played;
                 TextView st_won;
                 TextView st_drawn;
                 TextView st_lost;
                 TextView st_points;
                 TextView st_goals_for;
                 TextView st_goals_against;
                 TextView st_points_deduction;
         }

}

只需檢查您彈出的列表視圖的布局即可。 如果使用嵌套的Linearlayouts,則可能會出現這種問題。 首選RelativeLayouts。 通脹速度快得多。

還要閱讀此內容

您的R.layout.standings_layout必須在另一個中有很多LinearLayouts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM