【发布时间】:2018-07-05 19:35:36
【问题描述】:
我正在使用 HashMap 为我的列表视图适配器获取值。 问题是我的 HashMap 的最后两个元素重复了。 在发布此问题之前,我尝试了不同的解决方案。 非常感谢您的帮助,谢谢。
这是我的 HashMap 的代码
final String[] bookTitles = new String[]{
"android-iconify",
"Calligraphy",
"SmartTabLayout",
"android-viewpager-transformers",
"Android-Rate",
"FloatingActionButton",
"TapTargetView",
"MaterialDrawer"
};
final String[] authors = new String[]{
"Version 2.2.2",
"Version 2.2.0",
"Version 1.6.1",
"Version 1.0.1",
"Version 1.0.1",
"Version 1.6.4",
"Version 1.11.0",
"Version 6.0.8"
};
final String[] bookPages = new String[]{
"Copyright 2015 Joan Zapata",
"Copyright 2013 Christopher Jenkins",
"Copyright (C) 2015 ogaclejapan\nCopyright (C) 2013 The Android Open Source Project",
"Copyright 2015 Georgi Eftimov",
"Maintained by hotchemi",
"Copyright 2015 Dmytro Tarianyk",
"Copyright 2016 Keepsafe Software Inc.",
"Copyright 2018 Mike Penz"
};
ArrayList<HashMap<String, String>> authorList = new ArrayList<>();
for (int i = 0; i < 8; i++){
HashMap<String, String> data = new HashMap<>();
data.put("title", bookTitles[i]);
data.put("pages", bookPages[i]);
data.put("author", authors[i]);
authorList.add(data);
}
//Setup adapter
customListViewAdapter = new CustomListViewAdapter(getApplicationContext(), authorList);
listView.setAdapter(customListViewAdapter);
这是我的 CustomListView 适配器的代码。
CustomListView 适配器
package com.novamlineam.meezan;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.zip.Inflater;
public class CustomListViewAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<HashMap<String, String>> books;
private static LayoutInflater inflater = null;
public CustomListViewAdapter(Context context, ArrayList<HashMap<String, String>> data) {
mContext = context;
books = data;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return books.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (convertView == null){
view = inflater.inflate(R.layout.list_row, null);
TextView title = (TextView) view.findViewById(R.id.libraryName);
TextView author = (TextView) view.findViewById(R.id.libraryVersion);
TextView pages = (TextView) view.findViewById(R.id.libraryCopyright);
HashMap<String, String> mBook = new HashMap<>();
mBook = books.get(position);
title.setText(mBook.get("title"));
author.setText(mBook.get("author"));
pages.setText(mBook.get("pages"));
}
return view;
}
}
这是我得到的输出
output of CustomListView Adapter
remaining output of CustomListView Adapter
请帮助我。
【问题讨论】:
-
我没有看到您在屏幕截图中向我们展示的任何重复数据。你能解释清楚吗??
-
谢谢,是convertView的问题,现在已经解决了。 :)
标签: java android android-studio hashmap