2013-07-10 61 views
-1

在我的應用程序去顯示這樣如何顯示消息使用列表視圖在android的佈局的兩側?

請告訴我一個消息,如何顯示在列表視圖中的消息,以及如何顯示一個列表視圖 一個是左,另一種是正確的

請怎麼在消息的底部顯示一個時間看我的代碼

//view display 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    AllmessagedispalyContants message = (AllmessagedispalyContants) this.getItem(position); 
    ViewHolder holder; 
    if(convertView == null) 
    { 
     holder = new ViewHolder(); 
     convertView = LayoutInflater.from(mContext).inflate(R.layout.allmessagesms, null); 



     holder.message = (TextView) convertView.findViewById(R.id.message_text); 
     holder.date=(TextView)convertView.findViewById(R.id.date); 

     convertView.setTag(holder); 
    } 
    else 
     holder = (ViewHolder) convertView.getTag(); 

    holder.message.setText(message.getMessage()); 
    holder.date.setText(message.getDate()); 


    LayoutParams lp = (LayoutParams) holder.message.getLayoutParams(); 
    lp = (LayoutParams)holder.date.getLayoutParams(); 

    //check if it is a status message then remove background, and change text color. 
    if(message.isStatusMessage()) 
    { 
     holder.message.setBackgroundDrawable(null); 
     lp.gravity = Gravity.LEFT; 
     holder.message.setTextColor(R.color.textFieldColor); 
    } 
    else 
    { 
     //Check whether message is mine to show green background and align to right 

     if(message.messageType.equals(bool)) 
     { 

      holder.message.setBackgroundResource(R.drawable.right); 
      lp.gravity = Gravity.RIGHT; 

     } 
     //If not mine then it is from sender to show orange background and align to left 
     else 
     { 

      holder.message.setBackgroundResource(R.drawable.lift); 
      lp.gravity = Gravity.LEFT; 

     } 
     holder.message.setLayoutParams(lp); 
     holder.message.setTextSize(14); 
     Typeface typface=Typeface.createFromAsset(mContext.getAssets(),"fonts/Roboto-Bold.ttf"); 
     holder.message.setTypeface(typface); 

     //holder.message.setTextColor(R.color.textColor); 
    } 
    return convertView; 
} 
private static class ViewHolder 
{ 
    TextView message; 
    TextView date; 



} 

enter image description here

+0

你需要有一個自定義的listview。檢查這個http://stackoverflow.com/questions/17370525/listview-adapter-with-arbitrary-number-of-row-types-dont-know-the-number-of-di/17370772#17370772。兩個佈局左圖右一個佈局。 – Raghunandan

回答

3

您必須編寫自定義適配器和獲取視圖方法取決於位置值可以與圖像位置無論是在左邊或右邊返回相應的佈局。例如,每個奇數都將圖像放在左側,並將消息放在右側。

if((position%2)==0 
// even display the image on the right 
else 
    // odd display the image on the left. 

爲了給你一個想法, 下面創建一個佈局,左邊的圖像:

<?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="match_parent" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" /> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_toRightOf="@+id/textView1" 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 

</RelativeLayout> 

<?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="match_parent" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@+id/imageView1" 
     android:layout_alignParentRight="true" 
     android:text="TextView" /> 

</RelativeLayout> 

與右側的圖像創建另一個佈局在獲取視圖的方法前面提到的,你可以做到以下幾點:

public View getView(int position, View convertView, ViewGroup parent) { 

     View view; 
     LayoutInflater vi = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if((position%2)==0{ 
     // even display the image on the right. 
     view = vi.inflate(R.layout.image_right_layout, null); 
     }else{ 
     // odd display the image on the left. 
     view = vi.inflate(R.layout.image_left_layout, null); 
     } 

     return view; 

}

您必須更改代碼以將內容設置到視圖中。

+0

請告訴我任何解釋r教程頁 –

+0

請按照上面提供的網址應該幫助。 –

0

使用自定義適配器列表視圖,並與2的TextView和列表視圖行(一個用於發送者和一個接收機)2圖像創建佈局。
現在使用數據庫,您可以保留消息和狀態,無論是來自發送方還是接收方。根據你可以決定的ImageView和EDITTEXT要告訴你要隱藏

哪一個基本上你需要這樣的:

1)2 ImageView的(一個用於接收另一個用於發送)
2 )2的EditText或TextView的一個用於接收另一個用於發送者)
3)數據庫保存消息條目,並通過列表視圖

這裏在您的UI顯示它是佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" 
     > 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="Your Speech" 
      android:textColor="@android:color/black" 
      android:background="@android:color/holo_green_light" 
      > 

     </TextView> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="sender's Speech" 
      android:gravity="right" 
      android:textColor="@android:color/black" 
      android:background="@android:color/holo_blue_light" 
      > 

     </TextView> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="5" 
     android:orientation="horizontal" 
     android:weightSum="10" > 

     <ImageView 
      android:background="@drawable/ic_launcher" 
      android:layout_height="50dip" 
      android:layout_width="0dip" 
      android:layout_weight="2" 
      /> 
     <TextView 
      android:layout_height="0dip" 
      android:layout_width="0dip" 
      android:layout_weight="6" 
      /> 
     <ImageView 
      android:background="@drawable/ic_launcher" 
      android:layout_height="50dip" 
      android:layout_width="0dip" 
      android:layout_weight="2" 

      /> 
    </LinearLayout> 

</LinearLayout> 

當你設置接收機話音的TextView的知名度,「隱形」和ImageView的到的「隱形」,你會得到這樣的佈局:

enter image description here

當你設置你的演講的TextView的知名度「水漲船高」和ImageView的到的‘隱形’你這個佈局:

enter image description here

設置此佈局的ListView的行。希望這會有所幫助。

+0

請讓我看看UI列表視圖請願書 –

相關問題