オンライン チャット アプリを作成しています。リスト ビューを使用して、その時点でオンラインになっている連絡先を表示しています。私の問題は、連絡先の名前と緑色のステータス アイコンなど (Facebook やその他のチャット アプリケーションなど) を 1 行に表示したいことです。
リストビューの右端に連絡先名と緑色を表示する方法がわかりません。誰かが問題を解決するのを手伝ってくれますか?
オンライン チャット アプリを作成しています。リスト ビューを使用して、その時点でオンラインになっている連絡先を表示しています。私の問題は、連絡先の名前と緑色のステータス アイコンなど (Facebook やその他のチャット アプリケーションなど) を 1 行に表示したいことです。
リストビューの右端に連絡先名と緑色を表示する方法がわかりません。誰かが問題を解決するのを手伝ってくれますか?
カスタム アダプターには、次のレイアウトを使用できます。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/statusTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableRight="@drawable/status" />
</LinearLayout>
画像を動的に変更するには、カスタム アダプターから getView(...) 内で setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)を使用できます。
元:
public View getView(int position, View convertView, ViewGroup parent) {
convertView = context.getLayoutInflater().inflate(R.layout.item_element, null);
TextView statusTV = (TextView) convertView.findViewById(R.id.status);
statusTV.setText("...");
Drawable compoundDrawable = context.getResources().getDrawable(R.drawable.status);
statusTV.setCompoundDrawables(compoundDrawable, null, null, null);
return convertView;
}
また、listView の最適化にはviewHolder パターンを使用します。
そのためには、ListView
以下のようにアイテムのカスタム レイアウトを作成する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TextView
android:text="Contact name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
/>
<ImageView
android:layout_width="10dip"
android:layout_height="match_parent"
android:background="green_circle_image"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
これは、コードを提供するのではなく、 内にカスタム アイテムが必要な非常に単純なケースです。レイアウト インフレーションlistview
の概念を理解することをお勧めします。ここでは、設計したレイアウトでほとんどすべてのコンテナ レイアウトをインフレーションできます。
textview
グーグルで検索すると、あなたのケースで多くの例が見つかりますimageview
。