我正在使用Media extractor API编写媒体播放器应用程序。所以我的解码器解码数据并在表面上显示内容。这工作正常。我有一个列表视图。当我滚动这个列表视图时,它显示对解码器线程的影响。所以我受到了一些干扰。我该如何解决这个问题。有没有办法在单独的线程上运行我的listView适配器(getView()方法)? 我看到了这个链接。它可能对我没有帮助。 http://developer.android.com/training/improving-layouts/smooth-scrolling.html因为我的列表项只包含一个textView。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView txt_Effects;
ImageView proImage;
if(convertView == null){
LayoutInflater inflater= (LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView= inflater.inflate(R.layout.row_listview, null);
txt_Effects= (TextView)convertView.findViewById(R.id.txt_row);
proImage= (ImageView)convertView.findViewById(R.id.proImage_row);
}
else{
txt_Effects= (TextView)convertView.findViewById(R.id.txt_row);
proImage= (ImageView)convertView.findViewById(R.id.proImage_row);
}
txt_Effects.setText(data[position]);
txt_Effects.setTextColor(Color.WHITE);
proImage.setVisibility(View.GONE);
if(position == previousSelectionIndex){
txt_Effects.setTextColor(Color.MAGENTA);
prevSelectedTextView= txt_Effects;
}
if(position>= startProIndex && position <= endProIndex){
proImage.setVisibility(View.VISIBLE);
}
return convertView;
}
答案 0 :(得分:2)
您应该在getView()方法之外执行所有“重”操作。考虑使用AsyncTask或ThreadPool进行“解码”,然后在UI线程中更新ListView。
答案 1 :(得分:2)