我嘗試從url解析json並顯示項目列表視圖(圖像和文本)。我有一個問題適配器在listview上添加相同的項目。在我的URL上,我有20個項目 起初它似乎不錯,但當試圖滾動列表時,記錄是相同的(更具體地說,其記錄最初是列表) meybe我的問題是BaseAdapter,這是我的代碼Json BaseAdapter
private LayoutInflater inflater;
private Activity activity;
public ArrayList<HashMap<String, String>> data;
public ViewHolder holder;
public ImageLoader imageLoader;
HashMap<String, String> itemList;
private int screenSize;
MainActivity main;
public BRIgeAdapter(Activity a, ArrayList<HashMap<String, String>> d,
int screenSize) {
this.activity = a;
this.data = d;
this.screenSize = screenSize;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader = new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return data.get(position);
}
public long getItemId(int position) {
return (long) position;
}
@Override
public int getViewTypeCount() {
return data.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
holder = new ViewHolder();
main = new MainActivity();
convertView = inflater.inflate(R.layout.list_row, parent, false);
holder.journal = (TextView) convertView
.findViewById(R.id.smalljournal);
holder.statId = (TextView) convertView
.findViewById(R.id.smallstatID);
holder.smallDescription1 = (TextView) convertView
.findViewById(R.id.smallDescription1);
holder.DateTime = (TextView) convertView
.findViewById(R.id.smallDateTime);
holder.thumb_image = (ImageView) convertView
.findViewById(R.id.smallthumb);
holder.title = (TextView) convertView.findViewById(R.id.smalltitle);
holder.description = (TextView) convertView
.findViewById(R.id.smallDescription);
convertView.setTag(holder);
itemList = data.get(position);
holder.journal.setText(itemList.get(MainActivity.KEY_journal));
// holder.DateTime.setText(itemList.get(MainActivity.KEY_pubDate));
holder.statId.setText(itemList.get(MainActivity.KEY_statID));
holder.smallDescription1.setText(itemList
.get(MainActivity.KEY_description));
holder.journal.setTypeface(MainActivity.tf2);
String titleString = itemList.get(MainActivity.KEY_title);
Calendar cal = new GregorianCalendar(2013, 11, 20);
DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date = df.format(cal.getTime());
String DateTime = itemList.get(MainActivity.KEY_pubDate);
DateTime = date;
holder.DateTime.setText(DateTime);
holder.thumb_image.setScaleType(ScaleType.FIT_XY);
holder.title.setText(titleString);
holder.title.setTypeface(MainActivity.tf2);
holder.title.setLineSpacing(2, 1.2f);
holder.description.setLineSpacing(2, 1.2f);
if (screenSize == Configuration.SCREENLAYOUT_SIZE_NORMAL)
holder.description.setVisibility(View.INVISIBLE);
else
holder.description.setText(itemList
.get(MainActivity.KEY_description));
holder.description.setTypeface(MainActivity.tf2);
imageLoader.DisplayImage(itemList.get(MainActivity.KEY_image),
holder.thumb_image);
}
return convertView;
}
static class ViewHolder {
public TextView journal, title, description, smallDescription1,
DateTime, statId;
ImageView thumb_image;
}
如果有人知道解決我的問題,請幫助 感謝
這是一個正確的解決方案您的選擇? –
正如我在上面提到的代碼..如果convertview爲null,然後通過new運算符創建持有者對象,並且如果convertview不爲null,則從convertview持有人= convertview.getTag(); –