現在のAndroid SDK、r15を使用しています。アンドロイド仮想デバイス - 表示が奇妙な背景色になりました
私のプロジェクトでは、BaseAdapterに基づいてカスタマイズされたアダプタでListViewを使用しています。 BaseAdapter :: getView-methodには、xml ressourcesから膨らみ、カスタマイズされ、テキストで満たされたビューがあります。いくつかの条件に応じて背景色も変更されます。これは素晴らしいですが、:
Android 3.0以上のAndroid仮想デバイス(AVD)では、Androidが既存のビューをリサイクルしようとするとき、背景色がxml ressourceで指定されていても変更されます。
これはアンドロイドエミュレータの問題ですか、これが実際のデバイスでも発生することはありますか? 同じアプリケーションで、実際のデバイスでこの問題を見たことはありません。 私はlogin-layout(ほぼ白色、入力フィールドとボタン付き)、連絡先listViewと会話listViewを含む "タブレット" - レイアウトを持つプロジェクトを持っています。ログイン後、私は連絡先を選択することができます。オンラインの連絡先には緑の背景があり、オフラインの連絡先にはホワイトの連絡先があります。連絡先を選択すると、連絡先の背景が赤色に変わります。会話は会話listViewに読み込まれます。今すぐログオフし、以前の連絡先のListViewのように、以前のホワイトログインが緑色か赤色である可能性があります。また、私の会話のlistView-Entriesでも、連絡先listView要素の色を継承し、xmlで指定された背景色は無視されます。それはかなりランダムなようです。 getViewメソッドの
短縮コード: (単に 'profileImage' を設定するためのコードを除く)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = inflater.inflate(R.layout.contacts_listelement, parent, false);
int userId = contactList.get(position);
BackendStamp user = users.get(userId);
ImageView profileImage = (ImageView)view.findViewById(R.id.profilePicture);
TextView username = (TextView)view.findViewById(R.id.username);
TextView unreadMails = (TextView)view.findViewById(R.id.unreadMails);
ImageView userStatus = (ImageView)view.findViewById(R.id.userStatus);
if (user != null) {
if (user.getUnreadMails() == 0) {
unreadMails.setBackgroundResource(R.drawable.bgmessagesnull);
unreadMails.setTextColor(0xff000000);
}
else {
unreadMails.setBackgroundResource(R.drawable.bgmessagesnotnull);
unreadMails.setTextColor(0xffffffff);
}
if (user.getStatus() == 0) {
view.setBackgroundColor(0xFFFFFFFF);
}
else {
view.setBackgroundColor(0xFFEFFFD4);
}
// [...]
username.setText(user.getNickname());
unreadMails.setText("" + user.getUnreadMails());
// [...]
}
return view;
}
'getView'関数のコードを記述できますか? – havexz
私は 'getView'のコードを含め、今質問を編集しました。 – pmedia