リストビューを適応させました。リスト ビューの内容は、私のクラスのオブジェクトでした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()
、リストビューの内容が異なる方法で表示されます。
カスタムアダプターを実装するとすぐに、これは機能しなくなりました。この問題を調べたところ、人々のデータベースが更新されていることがわかりましたが、ビューを無効にしてdatasetchangedなどを通知していたにもかかわらず、リストビューはビューを更新していませんでした。カスタムアダプターについて何か欠けているものはありますか?
ありがとう
編集: 私の正確な方法を参照してくださいtoString()
。この方法では機能しません。通常のアダプターでは機能しましたが、カスタム アダプターでは機能しませんでした。
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 シンプル アダプターの表示