我的ListView有問題,特別是在getView中。在我的Article對象中,我包含一個布爾參數,對象文本的顏色取決於參數。但是,在屏幕上顯示對象文本顏色時,僅取決於兩個第一個對象。例如,fisrt obeject包含「true」參數,第二個包含「false」參數,所有下一個obects在「true」/「false」查詢中都有自己的參數,儘管所有下一個對象只包含「false」參數。 其他內容的對象是好的,並顯示良好。ListView在滾動上的位置
這是我的getView方法。在那裏我標記了我的Log.d命令。而滾動我得到這個,它只是滾動到第三個對象連續:
08-13 12:20:51.538 21990-21990/md.mybebe.mybebe D/readCUstom﹕ 512 true
08-13 12:20:51.568 21990-21990/md.mybebe.mybebe D/readCUstom﹕ 510 false
08-13 12:20:51.588 21990-21990/md.mybebe.mybebe D/readCUstom﹕ 512 true
08-13 12:20:51.618 21990-21990/md.mybebe.mybebe D/readCUstom﹕ 510 false
08-13 12:20:53.460 21990-21990/md.mybebe.mybebe D/readCUstom﹕ 508 false
08-13 12:20:54.511 21990-21990/md.mybebe.mybebe D/readCUstom﹕ 512 true
08-13 12:20:54.561 21990-21990/md.mybebe.mybebe D/readCUstom﹕ 510 false
08-13 12:20:54.591 21990-21990/md.mybebe.mybebe D/readCUstom﹕ 512 true
08-13 12:20:54.621 21990-21990/md.mybebe.mybebe D/readCUstom﹕ 510 false
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
Typeface robotoRegular = Typeface.createFromAsset(activity.getAssets(),"font/Roboto-Regular.ttf");
Typeface robotoBold = Typeface.createFromAsset(activity.getAssets(),"font/Roboto-Bold.ttf");
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = activity.getLayoutInflater();
DisplayMetrics dm = new DisplayMetrics();
((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(dm);
if (dm.widthPixels <= 480) {
rowView = inflater.inflate(R.layout.list_row_little_width, parent, false);
} else {
rowView = inflater.inflate(R.layout.list_row, parent, false);
}
if (imageLoader == null) imageLoader = AppController.getInstance().getImageLoader();
holder = new ViewHolder();
holder.thumbNail = (NetworkImageView) rowView.findViewById(R.id.thumbnail);
holder.title = (TextView) rowView.findViewById(R.id.title);
holder.title.setTypeface(robotoBold);
holder.description = (TextView) rowView.findViewById(R.id.description);
holder.description.setTypeface(robotoRegular);
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
---->> Log.d("readCUstom", articleItems.get(position).getId()+ " " +articleItems.get(position).isRead());
if (articleItems.get(position).isRead()) {
holder.title.setTextColor(Color.argb(100, 0, 0, 0));
holder.description.setTextColor(Color.argb(100, 0, 0, 0));
}
final Button readMoreButton = (Button) rowView.findViewById(R.id.readMoreButton);
readMoreButton.setTypeface(robotoBold);
ImageButton toShare = (ImageButton) rowView.findViewById(R.id.toShareButton);
toAddToFavorite = (ImageButton) rowView.findViewById(R.id.toAddToFavoriteButton);
SharedPreferences mSettings = activity.getSharedPreferences(LoginActivity.APP_PREFERENCES, Context.MODE_PRIVATE);
int userID = mSettings.getInt(LoginActivity.APP_PREFERENCES_PROFILE_ID,0);
if(articleItems.get(position).isFavorite() & userID != 0) toAddToFavorite.setImageResource(R.drawable.ic_star);
else toAddToFavorite.setImageResource(R.drawable.ic_star_outline);
// getting movie data for the row
final Article article = articleItems.get(position);
final View view = rowView;
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
readMoreButton.performClick();
readMoreButton.setPressed(true);
view.setSelected(true);
}
});
URLImageParser p = new URLImageParser(holder.description, rowView.getContext(), activity);
String html = article.getDescription();
MyHtmlTagHandler tagHandler = new MyHtmlTagHandler();
Spanned htmlSpan = Html.fromHtml(html, p, tagHandler);
// thumbnail image
holder.thumbNail.setImageUrl(article.getThumbnailUrl(), imageLoader);
// title
holder.title.setText(TextUtils.htmlEncode(article.getTitle()));
// description
holder.description.setText(htmlSpan);
toShare.setOnClickListener(toShareOnClickListener(article, position));
toAddToFavorite.setOnClickListener(toAddToFavoriteListener(position));
// button read more
readMoreButton.setOnClickListener(readMoreClickListener(position));
return view;
}