我已經問了一個類似的問題here和一個用戶建議子類ArrayAdapter
,但我有問題。 這裏是我的問題:Android中的子類ArrayAdapter顯示ArrayList
我使用HashMap<String, String>
和SimpleAdapter
對象在我ListView
顯示的用戶數據,但現在我想用含有真正的用戶對象的ArrayList<User>();
更換HashMap<String, String>
。
這裏是舊代碼:
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_USERNAME, c.getString(TAG_USERNAME));
map.put(TAG_FIRSTNAME, c.getString(TAG_FIRSTNAME));
map.put(TAG_LASTNAME, c.getString(TAG_LASTNAME));
map.put(TAG_ADDRESS, c.getString(TAG_ADDRESS));
usersList.add(map);
[...]現在
ListAdapter adapter = new SimpleAdapter(this, usersList,
R.layout.single_user, new String[] { TAG_USERNAME,
TAG_FIRSTNAME, TAG_LASTNAME, TAG_ADDRESS },
new int[] { R.id.textViewUsername, R.id.textViewFirstName,
R.id.textViewLastName, R.id.textViewAddress });
,作爲建議,我想繼承ArrayAdapter
,但我沒有計劃如何getView(int, View, ViewGroup)
應該看喜歡,達到我的目標。
這裏是我當前的代碼:
public class UserArrayAdapter extends ArrayAdapter<User> {
private Context mcon;
private List<User> userList;
public UserArrayAdapter(Context context, int resource,
List<User> userList) {
super(context, resource);
mcon = context;
this.userList = userList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
for (User usr : userList) {
findViewById(R.id.textViewUsername).setText(usr.getFirstName());
}
return super.getView(position, convertView, parent);
}
}
下面是用戶等級:
public class User {
private String username, firstName, lastName, address;
public User(String username, String firstName, String lastName,
String address) {
setUsername(username);
setFirstName(firstName);
setLastName(lastName);
setAddress(address);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
if (username == null) {
throw new IllegalArgumentException("username is null.");
}
this.username = username;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
if (firstName == null) {
throw new IllegalArgumentException("firstName is null.");
}
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
if (lastName == null) {
throw new IllegalArgumentException("lastName is null.");
}
this.lastName = lastName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
if (address == null) {
throw new IllegalArgumentException("address is null.");
}
this.address = address;
}
}
而且我以爲我會這樣稱呼它:
ListAdapter ad = new UserArrayAdapter(this, R.layout.single_user, usersArrList);
任何幫助將不勝感激。
向我們展示您的用戶類 – 2014-10-10 16:04:19
當然。編輯完成。 – user3475602 2014-10-10 16:07:20