gpt4 book ai didi

java - Android:toString() 方法无法与自定义适配器一起正常工作?

转载 作者:行者123 更新时间:2023-11-29 05:36:45 26 4
gpt4 key购买 nike

我有一个调整 ListView 。 ListView 的内容是我的类 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() 方法导致 ListView 以不同方式显示其内容。

一旦我实现了我的自定义适配器,它就停止工作了。我调查了此事,发现我的人员数据库正在更新,但 ListView 只是没有刷新其 View ,尽管我正在使 View 无效并通知数据集已更改等。关于自定义适配器,我是否遗漏了什么?

谢谢

编辑:请查看我的确切 toString() 方法。它不适用于此方法。它适用于普通适配器,但不适用于我的自定义适配器。

EDIT2:这是我的自定义适配器。这很可能是问题所在,但让我很困惑。

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 simple adapter display in a listview

最佳答案

如果您使用的是 ListView ,那么您需要调用custom_adapter.notifyDataSetChanged(); 来刷新 ListView 。它会自动更新 ListView 。实际情况是,根据用户的选择,您的 ListView 所使用的字符串在 custom_adapter 中应该是正确的。

如果它也不能解决您的问题,那么请检查您的 mData.get(position).getFullName();正在返回正确的字符串以在 textview 上设置。

关于java - Android:toString() 方法无法与自定义适配器一起正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19263916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com