Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 具有很长文本的ListView无法平滑滚动。如何提高性能?_Android_Listview - Fatal编程技术网

Android 具有很长文本的ListView无法平滑滚动。如何提高性能?

Android 具有很长文本的ListView无法平滑滚动。如何提高性能?,android,listview,Android,Listview,我创建的一些视图包含很长的文本(即15k字符)。我怎样才能在没有任何障碍的情况下滚动这些视图? 我曾尝试在一个单独的威胁中创建视图,因为我认为延迟可能来自度量过程——但当视图添加到ListView时,hickup仍然存在。 有人对如何处理这个问题有不同的想法吗?尽管您没有提供更多信息,但请尝试一下 Listview页脚用作页脚布局 hick ups同时有这么多可见/活动/存在的数据是正常的 与其花很多时间来改善设计糟糕的系统的性能,有时最好改变这种设计。这里有一些替代解决方案,它们只需要同时存在

我创建的一些视图包含很长的文本(即15k字符)。我怎样才能在没有任何障碍的情况下滚动这些视图? 我曾尝试在一个单独的威胁中创建视图,因为我认为延迟可能来自度量过程——但当视图添加到ListView时,hickup仍然存在。
有人对如何处理这个问题有不同的想法吗?

尽管您没有提供更多信息,但请尝试一下

Listview页脚用作页脚布局


hick ups同时有这么多可见/活动/存在的数据是正常的

与其花很多时间来改善设计糟糕的系统的性能,有时最好改变这种设计。这里有一些替代解决方案,它们只需要同时存在一个或几个文本

  • 对ListView项的内容使用较短的文本,并且仅在选择项后显示该项的全部文本。在不同的片段或活动中
  • 制作包含整个文本的选项卡或水平页面,并在更改选项卡/页面时加载新数据(例如,页面使用水平翻转进行更改)
  • 经历这一切

    import android.widget.Toast;
    
    public class TuneAdapter extends BaseAdapter {
    
        LayoutInflater inflater;
        Context mcontext;
    
    
    
    
    
        String[] name={"Donald Duck","Peter griffin","Lion roaring","Boo laugh","Cowboy","Tarzan","Bird word","Angry cat","Madagascar Move"};
    
        int[]image={R.drawable.donald,R.drawable.peter,R.drawable.lion,R.drawable.boo,R.drawable.cow,R.drawable.tarze,R.drawable.bird,R.drawable.cat,R.drawable.meda};
    
    
        int[] audio={R.raw.donald,R.raw.peter_griffin_fart,R.raw.lion_roaring,R.raw.boo_laugh,R.raw.cowboy,R.raw.tarzan,R.raw.bird_is_the_word,R.raw.angry_cat,R.raw.madagascar_move_it};
        public TuneAdapter(Activity activity) {
            // TODO Auto-generated constructor stub
    
            mcontext=activity;
    
            inflater=(LayoutInflater) mcontext.getSystemService(mcontext.LAYOUT_INFLATER_SERVICE);
    
    
    
        }
    
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return audio.length;
        }
    
        @Override
        public Object getItem(int arg0) {
    
            // TODO Auto-generated method stub
            return arg0;
        }
    
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
    
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
    
            final ViewHolder holder;
    
    
    
            if(convertView==null)
            {
    
                holder=new ViewHolder();
    
                convertView=inflater.inflate(R.layout.tuneadapter, null);
    
                holder.image=(ImageView) convertView.findViewById(R.id.tune_image);
    
                holder.name=(TextView) convertView.findViewById(R.id.Tune_name);
    
                holder.use=(TextView) convertView.findViewById(R.id.tune_use);
    
                holder.visualizer=(VisualizerView) convertView.findViewById(R.id.visualizerView1);
    
                holder.play=(ImageButton) convertView.findViewById(R.id.tune_play);
    
                convertView.setTag(holder);
            }
            else
            {
                holder=(ViewHolder) convertView.getTag();
            }
    
    
            holder.image.setImageResource(image[position]);
    
            holder.name.setText(name[position]);
    
    
    
            holder.use.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
    
                    new SvaeSDCard(audio[position],name[position]).execute(1);
    
                }
            });
    
    
    
            holder.play.setOnClickListener(new OnClickListener() {
    
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
    
    
                      MediaPlayer mPlayer  = MediaPlayer.create(mcontext,audio[position]);
    
                    mPlayer.start();
    
                    holder.play.setVisibility(View.INVISIBLE);
    
                    holder.visualizer.setVisibility(View.VISIBLE);
    
                    holder.visualizer.link(mPlayer);
    
    
    
                    Paint paint = new Paint();
    
                    paint.setStrokeWidth(10f);
    
                    paint.setAntiAlias(true);
    
                    paint.setColor(Color.argb(255, 0, 0, 0));
    
                    BarGraphRenderer barGraphRendererBottom = new BarGraphRenderer(3, paint, false);
    
                    holder.visualizer.addRenderer(barGraphRendererBottom);
    
                    mPlayer.setOnCompletionListener(new OnCompletionListener() {
    
                        @Override
                        public void onCompletion(MediaPlayer mp) {
                            // TODO Auto-generated method stub
    
                            holder.play.setVisibility(View.VISIBLE);
    
    
    
                        }
                    });
                }
            });
    
    
    
            return convertView;
        }
    
    
        class ViewHolder
        {
    
            ImageView image;
    
            TextView name,use;
    
            VisualizerView visualizer;
    
            ImageButton play;
        }
    
    }
    

    请发布所有相关的代码,如适配器等。否则将很难查明问题。一般来说,长文本不应该是一个问题,其他的东西一定是错的。
    import android.widget.Toast;
    
    public class TuneAdapter extends BaseAdapter {
    
        LayoutInflater inflater;
        Context mcontext;
    
    
    
    
    
        String[] name={"Donald Duck","Peter griffin","Lion roaring","Boo laugh","Cowboy","Tarzan","Bird word","Angry cat","Madagascar Move"};
    
        int[]image={R.drawable.donald,R.drawable.peter,R.drawable.lion,R.drawable.boo,R.drawable.cow,R.drawable.tarze,R.drawable.bird,R.drawable.cat,R.drawable.meda};
    
    
        int[] audio={R.raw.donald,R.raw.peter_griffin_fart,R.raw.lion_roaring,R.raw.boo_laugh,R.raw.cowboy,R.raw.tarzan,R.raw.bird_is_the_word,R.raw.angry_cat,R.raw.madagascar_move_it};
        public TuneAdapter(Activity activity) {
            // TODO Auto-generated constructor stub
    
            mcontext=activity;
    
            inflater=(LayoutInflater) mcontext.getSystemService(mcontext.LAYOUT_INFLATER_SERVICE);
    
    
    
        }
    
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return audio.length;
        }
    
        @Override
        public Object getItem(int arg0) {
    
            // TODO Auto-generated method stub
            return arg0;
        }
    
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
    
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
    
            final ViewHolder holder;
    
    
    
            if(convertView==null)
            {
    
                holder=new ViewHolder();
    
                convertView=inflater.inflate(R.layout.tuneadapter, null);
    
                holder.image=(ImageView) convertView.findViewById(R.id.tune_image);
    
                holder.name=(TextView) convertView.findViewById(R.id.Tune_name);
    
                holder.use=(TextView) convertView.findViewById(R.id.tune_use);
    
                holder.visualizer=(VisualizerView) convertView.findViewById(R.id.visualizerView1);
    
                holder.play=(ImageButton) convertView.findViewById(R.id.tune_play);
    
                convertView.setTag(holder);
            }
            else
            {
                holder=(ViewHolder) convertView.getTag();
            }
    
    
            holder.image.setImageResource(image[position]);
    
            holder.name.setText(name[position]);
    
    
    
            holder.use.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
    
                    new SvaeSDCard(audio[position],name[position]).execute(1);
    
                }
            });
    
    
    
            holder.play.setOnClickListener(new OnClickListener() {
    
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
    
    
                      MediaPlayer mPlayer  = MediaPlayer.create(mcontext,audio[position]);
    
                    mPlayer.start();
    
                    holder.play.setVisibility(View.INVISIBLE);
    
                    holder.visualizer.setVisibility(View.VISIBLE);
    
                    holder.visualizer.link(mPlayer);
    
    
    
                    Paint paint = new Paint();
    
                    paint.setStrokeWidth(10f);
    
                    paint.setAntiAlias(true);
    
                    paint.setColor(Color.argb(255, 0, 0, 0));
    
                    BarGraphRenderer barGraphRendererBottom = new BarGraphRenderer(3, paint, false);
    
                    holder.visualizer.addRenderer(barGraphRendererBottom);
    
                    mPlayer.setOnCompletionListener(new OnCompletionListener() {
    
                        @Override
                        public void onCompletion(MediaPlayer mp) {
                            // TODO Auto-generated method stub
    
                            holder.play.setVisibility(View.VISIBLE);
    
    
    
                        }
                    });
                }
            });
    
    
    
            return convertView;
        }
    
    
        class ViewHolder
        {
    
            ImageView image;
    
            TextView name,use;
    
            VisualizerView visualizer;
    
            ImageButton play;
        }
    
    }