我的应用程序是一个列表活动其中包含26行,每个包含图像和文本,每件事情都运行良好,但滚动列表显示一些滞后,特别是当它在默认情况下平滑滚动时不平滑Android的联系人列表,列表滚动滞后
我想:lv.setFastScrollEnabled(true);
也试图减少每行中的图像大小,直到我换成ic_launcher图像全部图像进行测试,但同样的滞后是存在的。
,但它使我光滑列表的滚动没有区别,任何建议或帮助将不胜感激。 注:班阿拉伯语得名。
我的代码:
菜单类:
public class Menu extends ListActivity {
String classes[] = { "المقدمة", "رحلتي", "اليوم الأول", "اليوم الثاني", "اليوم الثالث",
"اليوم الرابع", "اليوم الخامس", "اليوم السادس", "اليوم السابع", "اليوم الثامن", "اليوم التاسع", "اليوم العاشر", "اليوم الحادي عشر",
"اليوم الثاني عشر", "اليوم الثالث عشر", "اليوم الرابع عشر", "اليوم الخامس عشر", "اليوم السادس عشر", "اليوم السابع عشر",
"اليوم الثامن عشر", "اليوم التاسع عشر", "اليوم العشرون", "اليوم الحادي والعشرين", "اليوم الثاني والعشرين", "اليوم الثالث والعشرين", "الخاتمة"};
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// create background for whole list as image
ListView lv = getListView();
lv.setFastScrollEnabled(true);
lv.setCacheColorHint(0);
lv.setDivider(new ColorDrawable(0xFFDAB999));
lv.setSelector(android.R.color.transparent);
lv.setDividerHeight(10);
lv.setPadding(50, 0, 50, 0);
lv.setVerticalScrollBarEnabled(false);
lv.setBackgroundResource(R.drawable.a);
setListAdapter(new MyArrayAdapter(this, classes)); }
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String cheese = classes[position];
if(cheese.equals("المقدمة")) cheese = "Introduction";
if(cheese.equals("رحلتي")) cheese = "MyTrip";
if(cheese.equals("اليوم الأول")) cheese = "Day1";
if(cheese.equals("اليوم الثاني")) cheese = "Day2";
if(cheese.equals("اليوم الثالث")) cheese = "Day3";
if(cheese.equals("اليوم الرابع")) cheese = "Day4";
if(cheese.equals("اليوم الخامس")) cheese = "Day5";
if(cheese.equals("اليوم السادس")) cheese = "Day6";
if(cheese.equals("اليوم السابع")) cheese = "Day7";
if(cheese.equals("اليوم الثامن")) cheese = "Day8";
if(cheese.equals("اليوم التاسع")) cheese = "Day9";
if(cheese.equals("اليوم العاشر")) cheese = "Day10";
if(cheese.equals("اليوم الحادي عشر")) cheese = "Day11";
if(cheese.equals("اليوم الثاني عشر")) cheese = "Day12";
if(cheese.equals("اليوم الثالث عشر")) cheese = "Day13";
if(cheese.equals("اليوم الرابع عشر")) cheese = "Day14";
if(cheese.equals("اليوم الخامس عشر")) cheese = "Day15";
if(cheese.equals("اليوم السادس عشر")) cheese = "Day16";
if(cheese.equals("اليوم السابع عشر")) cheese = "Day17";
if(cheese.equals("اليوم الثامن عشر")) cheese = "Day18";
if(cheese.equals("اليوم التاسع عشر")) cheese = "Day19";
if(cheese.equals("اليوم العشرون")) cheese = "Day20";
if(cheese.equals("اليوم الحادي والعشرين")) cheese = "Day21";
if(cheese.equals("اليوم الثاني والعشرين")) cheese = "Day22";
if(cheese.equals("اليوم الثالث والعشرين")) cheese = "Day23";
if(cheese.equals("الخاتمة")) cheese = "Conclusion";
try{
Intent ourIntent;
if(position>1 && position<25) {
Class ourClass = Class.forName("com.tsn.dr.MyDay");
ourIntent = new Intent(Menu.this, ourClass);
ourIntent.putExtra("cheese", cheese);}
else {
Class ourClass = Class.forName("com.tsn.dr." + cheese);
ourIntent = new Intent(Menu.this,ourClass); }
startActivity(ourIntent); }
catch (ClassNotFoundException e){
e.printStackTrace(); }}
public boolean onCreateOptionsMenu(android.view.Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.cool_menu, menu);
getLayoutInflater().setFactory(new Factory() {
public View onCreateView(String name, Context context,
AttributeSet attrs) {
if (name .equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {
try {
LayoutInflater li = LayoutInflater.from(context);
final View view = li.createView(name, null, attrs);
new Handler().post(new Runnable() {
public void run() {
view .setBackgroundResource(R.drawable.border3);
((TextView) view).setTextSize(25);
Typeface face=Typeface.createFromAsset(getAssets(),"BFantezy.ttf");
((TextView) view).setTypeface(face);
((TextView) view).setTextColor(Color.RED);
}
});
return view;
} catch (InflateException e) {
} catch (ClassNotFoundException e) {
}
}
return null;
}
});
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.aboutUs:
Intent i = new Intent("com.tsn.dr.ABOUT");
startActivity(i);
break;
case R.id.preferences:
Intent p = new Intent("com.tsn.dr.PREFS");
startActivity(p);
break;
case R.id.exit:
finish();
break;
}
return false;
}
}
MyArrayAdapter类:
public class MyArrayAdapter extends ArrayAdapter<String> {
private final Activity context;
private final String[] classes;
Typeface tf;
public MyArrayAdapter(Activity context, String[] classes) {
super(context, R.layout.row, classes);
this.context = context;
this.classes = classes;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
tf=Typeface.createFromAsset(context.getAssets(),"BFantezy.ttf");
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.row, null, true);
TextView textView = (TextView) rowView.findViewById(R.id.row_label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.row_image);
String s = classes[position];
textView.setText(s);
((TextView)textView).setTypeface(tf);
if (s.startsWith("اليوم الأول")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الثاني")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الثالث")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الرابع")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الخامس")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم السادس")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم السابع")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الثامن")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم التاسع")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم العاشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الحادي عشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الثاني عشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الثالث عشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الرابع عشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الخامس عشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم السادس عشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم السابع عشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الثامن عشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم التاسع عشر")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم العشرون")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الحادي والعشرين")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الثاني والعشرين")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("اليوم الثالث والعشرين")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("الخاتمة")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("رحلتي")) {
imageView.setImageResource(R.drawable.ic_launcher); }
if (s.startsWith("المقدمة")) {
imageView.setImageResource(R.drawable.ic_launcher); }
return rowView; }}
您正在创建新行视图每次滚动时,都需要重新使用布局,[使用ViewHolder方法。](http://stackoverflow.com/a/9359237/593709) – 2013-02-20 10:42:12
@Adil Soomro acually我的朋友,我建立了我的列表中使用类和IM不使用的ListView XML,是与ViewHolder方法工作,感谢 – 2013-02-20 11:12:25
所有重要的是你的适配器的实现。 – 2013-02-20 11:13:21