我有一个调整列表视图。列表视图的内容是我班级的对象People
。班级有People
姓名和年龄。我想配置人员的显示方式,因此我构建了toString()
如下方法:
@Override
public String toString() {
switch(HomeScreenActivity.displayMode){
case 1:
return lastName + " " + firstName;
case 2:
return firstName + " " + mobileNumber;
case 3:
return lastName + " " + mobileNumber;
default:
return firstName + " " + lastName;
}
}
所以这是如何工作的,在我的程序中,用户被要求提供他/她喜欢的显示方法,他们选择它并myDisplaySwitcher
相应地更改,因此该toString()
方法导致列表视图以不同的方式显示其内容。
一旦我实现了我的自定义适配器,它就停止了工作。我调查了此事,发现我的人员数据库正在更新,但列表视图并没有刷新它的视图,尽管我正在使视图无效并通知数据集更改等。我是否缺少关于自定义适配器的一些东西?
谢谢
编辑:请参阅我的 EXACTtoString()
方法。它不适用于这种方法。它适用于普通适配器,但不适用于我的自定义适配器。
EDIT2:这是我的customAdapter。这很可能是问题所在,但这对我来说非常混乱。
private class peopleAdapter extends BaseAdapter {
private List<People> mData;
public peopleAdapter(List<People> data) {
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public String getItem(int position) {
return mData.get(position).getFullName();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView result;
if (convertView == null) {
result = (TextView) getLayoutInflater().inflate(
R.layout.home_screen_people_view, parent, false);
//result.setTextColor(getResources().getColor(
//R.color.darkish_blue));
} else {
result = (TextView) convertView;
}
final String personRow = getItem(position);
result.setText(personRow);
result.setBackgroundResource(R.drawable.list_selector);
return result;
}
}
EDIT3:这是我以前的问题。我遵循了公认的答案,它奏效了。这是一个已经实现的简单 ArrayAdapter。现在,除了使用自定义适配器外,我正在尝试实现相同的目标。Android 简单适配器在列表视图中显示