2013-09-24 32 views
0

我正在創建一個在線聊天應用程序。在那裏我使用列表視圖來顯示當時在線的聯繫人。我的問題是,我想在單行中顯示聯繫人姓名和綠色狀態圖標或類似的內容(如在Facebook或任何其他聊天應用程序中)。如何設計一個列表視圖,顯示單個行中的姓名和在線狀態

我不知道如何顯示聯繫人姓名+綠色的列表視圖 的右端任何人可以幫助我解決問題

回答

0
<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="horizontal" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:gravity="center_vertical" 
     > 

    <TextView 
      android:text="Contact name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
     /> 
    <View 
      android:layout_width="10dip" 
      android:layout_height="match_parent" 
      android:background="@color/green" 

     /> 

</LinearLayout> 
0

看這就是你想要一個非常簡單的例子一個listview內的自定義項目,而不是給你的代碼,我會建議你理解佈局通貨膨脹的概念,在那裏你可以用你設計的佈局來膨脹幾乎所有的容器佈局。

谷歌它你會發現你的案例很多例子看起來只有textviewimageview

1

你需要的是一個從BaseAdapter延伸的類。在那裏你可以爲每個listItem定義自己的佈局。

因此,首先您必須定義一個包含聯繫人名稱的例如TextView的佈局,例如一個ImageView

此佈局應該在BaseAdaptergetView()方法中自定義。 但請read this article,以確保你一個「平滑滾動」 listView

0

試試這個,

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:gravity="center_vertical" > 

<TextView 
    android:id="@+id/friendname" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="2.5" 
    android:gravity="center_vertical" 
    android:paddingLeft="10dip" 
    android:singleLine="true" 
    android:text="usename" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.2" 
    android:background="@drawable/profile" 
    android:paddingLeft="10dip" 
    /> 

</LinearLayout> 
+0

k.so此佈局是用於自定義適配器的權利.. –

+0

是的,你是對的... –

0

你需要爲列表視圖創建自定義適配器並將其設置爲這個列表視圖。

tutorial

會告訴你如何做到這一點。

好運

0

對於你必須讓自定義佈局爲您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> 
0

您可以使用下面的佈局爲您的自定義適配器:

<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> 

要改變你的圖像,你可以在你的自定義適配器中使用setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom) getView(...)。
例如:

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; 
} 

,並使用viewHolder pattern爲ListView控件優化。

相關問題