灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3670回复:0

android学习笔记30--------------聊天式对话效果

楼主#
更多 发布于:2012-09-06 13:43


这几天看了些聊天式对话效果,自己修改了一番。




public class ChatActivity extends Activity
{
    private ListView talkView;
    private Button messageButton;
    private EditText messageText;
    private ArrayList<ChatMessage> list = new ArrayList<ChatMessage>();

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();
    }

    private void init()
    {
        talkView = (ListView) findViewById(R.id.list);
        messageButton = (Button) findViewById(R.id.MessageButton);
        messageText = (EditText) findViewById(R.id.MessageText);
        messageButton.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
                String date = getDate();
                String msgText = getText();
                int RIdA = R.layout.chatting_item_from;
                ChatMessage newMsg = new ChatMessage( date, msgText, RIdA);
                
                list.add(newMsg);
                int RIdB = R.layout.chatting_item_to;

                ChatMessage backMsg = new ChatMessage(date,
                        "自动回复(for test!)", RIdB);
                list.add(backMsg);
                talkView
                        .setAdapter(new ChattingAdapter(ChatActivity.this, list));
                messageText.setText("");
            }
        });
    }

    private String getDate()
    {
        SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");
        Date d = new Date();
        return sdf.format(d);
    }

    private String getText()
    {
        return messageText.getText().toString();
    }

}
public class ChatActivity extends Activity
{
private ListView talkView;
private Button messageButton;
private EditText messageText;
private ArrayList<ChatMessage> list = new ArrayList<ChatMessage>();
@Override
public void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  init();
}
private void init()
{
  talkView = (ListView) findViewById(R.id.list);
  messageButton = (Button) findViewById(R.id.MessageButton);
  messageText = (EditText) findViewById(R.id.MessageText);
  messageButton.setOnClickListener(new OnClickListener()
  {
   @Override
   public void onClick(View v)
   {
    String date = getDate();
    String msgText = getText();
    int RIdA = R.layout.chatting_item_from;
    ChatMessage newMsg = new ChatMessage( date, msgText, RIdA);
    
    list.add(newMsg);
    int RIdB = R.layout.chatting_item_to;
    ChatMessage backMsg = new ChatMessage(date,
      "自动回复(for test!)", RIdB);
    list.add(backMsg);
    talkView
      .setAdapter(new ChattingAdapter(ChatActivity.this, list));
    messageText.setText("");
   }
  });
}
private String getDate()
{
  SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");
  Date d = new Date();
  return sdf.format(d);
}
private String getText()
{
  return messageText.getText().toString();
}
}
[java]
public class ChatMessage
{

    private String date;
    private String text;
    private int layoutID;

    public ChatMessage(String date, String text, int id)
    {
        this.date = date;
        this.text = text;
        this.layoutID = id;
    }

    public String getDate()
    {
        return date;
    }

    public void setDate(String date)
    {
        this.date = date;
    }

    public String getText()
    {
        return text;
    }

    public void setText(String text)
    {
        this.text = text;
    }

    public int getLayoutID()
    {
        return layoutID;
    }

    public void setLayoutID(int layoutID)
    {
        this.layoutID = layoutID;
    }

}
public class ChatMessage
{
private String date;
private String text;
private int layoutID;
public ChatMessage(String date, String text, int id)
{
  this.date = date;
  this.text = text;
  this.layoutID = id;
}
public String getDate()
{
  return date;
}
public void setDate(String date)
{
  this.date = date;
}
public String getText()
{
  return text;
}
public void setText(String text)
{
  this.text = text;
}
public int getLayoutID()
{
  return layoutID;
}
public void setLayoutID(int layoutID)
{
  this.layoutID = layoutID;
}
}
[java]
public class ChattingAdapter extends BaseAdapter
{
    //private static final String TAG = ChattingAdapter.class.getSimpleName();  

    private ArrayList<ChatMessage> list;
    private Context context;

    public ChattingAdapter(Context context, ArrayList<ChatMessage> list)
    {
        this.context = context;
        this.list = list;
    }

    public boolean areAllItemsEnabled()
    {
        return false;
    }

    public boolean isEnabled(int arg0)
    {
        return false;
    }

    @Override
    public int getCount()
    {
        // TODO Auto-generated method stub  
        return list.size();
    }

    @Override
    public Object getItem(int position)
    {
        // TODO Auto-generated method stub  
        return list.get(position);
    }

    @Override
    public long getItemId(int position)
    {
        // TODO Auto-generated method stub  
        return position;
    }

    public int getItemViewType(int position)
    {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        ChatMessage msg = list.get(position);
        int itemlayout = msg.getLayoutID();
        LinearLayout layout = new LinearLayout(context);
        LayoutInflater vi = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        vi.inflate(itemlayout, layout, true);
        
        
        TextView tvDate = (TextView) layout
                .findViewById(R.id.messagedetail_row_date);
        
        tvDate.setText(msg.getDate());
        
        TextView tvText = (TextView) layout
                .findViewById(R.id.messagedetail_row_text);
        
        tvText.setText(msg.getText());
        return layout;
    }

    public int getViewTypeCount()
    {
        return list.size();
    }

    public boolean hasStableIds()
    {
        return false;
    }

    public boolean isEmpty()
    {
        return false;
    }

    public void registerDataSetObserver(DataSetObserver observer)
    {
    }

    public void unregisterDataSetObserver(DataSetObserver observer)
    {
    }

}
public class ChattingAdapter extends BaseAdapter
{
//private static final String TAG = ChattingAdapter.class.getSimpleName();
private ArrayList<ChatMessage> list;
private Context context;
public ChattingAdapter(Context context, ArrayList<ChatMessage> list)
{
  this.context = context;
  this.list = list;
}
public boolean areAllItemsEnabled()
{
  return false;
}
public boolean isEnabled(int arg0)
{
  return false;
}
@Override
public int getCount()
{
  // TODO Auto-generated method stub
  return list.size();
}
@Override
public Object getItem(int position)
{
  // TODO Auto-generated method stub
  return list.get(position);
}
@Override
public long getItemId(int position)
{
  // TODO Auto-generated method stub
  return position;
}
public int getItemViewType(int position)
{
  return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
  ChatMessage msg = list.get(position);
  int itemlayout = msg.getLayoutID();
  LinearLayout layout = new LinearLayout(context);
  LayoutInflater vi = (LayoutInflater) context
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  vi.inflate(itemlayout, layout, true);
  
  
  TextView tvDate = (TextView) layout
    .findViewById(R.id.messagedetail_row_date);
  
  tvDate.setText(msg.getDate());
  
  TextView tvText = (TextView) layout
    .findViewById(R.id.messagedetail_row_text);
  
  tvText.setText(msg.getText());
  return layout;
}
public int getViewTypeCount()
{
  return list.size();
}
public boolean hasStableIds()
{
  return false;
}
public boolean isEmpty()
{
  return false;
}
public void registerDataSetObserver(DataSetObserver observer)
{
}
public void unregisterDataSetObserver(DataSetObserver observer)
{
}
}
[java]
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout Android:orientation="vertical" Android:paddingLeft="6.0dip" Android:paddingRight="6.0dip" Android:layout_width="fill_parent" Android:layout_height="wrap_content"
  xmlns:Android="http://schemas.Android.com/apk/res/Android">
    
<LinearLayout  
      Android:orientation="vertical"  
      Android:layout_width="wrap_content"  
      Android:layout_height="wrap_content"  
      Android:background="@drawable/chatto"  
      Android:layout_marginLeft="25px"
      Android:layout_gravity="right">      

          <TextView  
            Android:id="@+id/messagedetail_row_text"  
            Android:layout_width="wrap_content"  
            Android:layout_height="wrap_content"  
            Android:paddingLeft="2px"  
            Android:textColor="#0000DD"  
            Android:textSize="16dip"  
            Android:layout_gravity="left"/>  
  
          <TextView  
              Android:id="@+id/messagedetail_row_date"  
              Android:layout_width="wrap_content"  
              Android:layout_height="wrap_content"  
              Android:textColor="#000000"  
              Android:paddingTop="2px"  
              Android:textSize="12dip"  
              Android:layout_marginLeft="60dip"
              Android:layout_gravity="right"/>  
      
  </LinearLayout>  

</LinearLayout>
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout Android:orientation="vertical" Android:paddingLeft="6.0dip" Android:paddingRight="6.0dip" Android:layout_width="fill_parent" Android:layout_height="wrap_content"
  xmlns:Android="http://schemas.Android.com/apk/res/Android">
  
<LinearLayout
      Android:orientation="vertical"
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:background="@drawable/chatto"
      Android:layout_marginLeft="25px"
      Android:layout_gravity="right">    
     <TextView
           Android:id="@+id/messagedetail_row_text"
           Android:layout_width="wrap_content"
           Android:layout_height="wrap_content"
          Android:paddingLeft="2px"
           Android:textColor="#0000DD"
          Android:textSize="16dip"
        Android:layout_gravity="left"/>

          <TextView
              Android:id="@+id/messagedetail_row_date"
              Android:layout_width="wrap_content"
              Android:layout_height="wrap_content"
              Android:textColor="#000000"
              Android:paddingTop="2px"
              Android:textSize="12dip"
              Android:layout_marginLeft="60dip"
              Android:layout_gravity="right"/>
    
  </LinearLayout>
</LinearLayout>
[java]
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout  
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">
    
    <LinearLayout  
      Android:orientation="vertical"  
      Android:layout_width="wrap_content"  
      Android:layout_height="wrap_content"  
      Android:background="@drawable/chatfrom"  
      Android:layout_marginLeft="5dp"
      Android:layout_gravity="left">      
                
          <TextView  
             Android:id="@+id/messagedetail_row_text"  
             Android:layout_width="wrap_content"  
             Android:layout_height="wrap_content"  
             Android:paddingLeft="2px"  
             Android:textColor="#0000DD"  
             Android:textSize="16dip"
             Android:layout_gravity="left"/>
            
          <TextView  
              Android:id="@+id/messagedetail_row_date"  
              Android:layout_width="wrap_content"  
              Android:layout_height="wrap_content"  
              Android:textColor="#000000"  
              Android:paddingTop="2px"  
              Android:textSize="12dip"  
              Android:layout_marginLeft="60dip"  
              Android:layout_gravity="right"/>  
                                  
          </LinearLayout>                
  
</LinearLayout>
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">
  
    <LinearLayout
      Android:orientation="vertical"
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:background="@drawable/chatfrom"
      Android:layout_marginLeft="5dp"
      Android:layout_gravity="left">    
              
          <TextView
           Android:id="@+id/messagedetail_row_text"
            Android:layout_width="wrap_content"
           Android:layout_height="wrap_content"
           Android:paddingLeft="2px"
           Android:textColor="#0000DD"
           Android:textSize="16dip"
           Android:layout_gravity="left"/>
          
          <TextView
              Android:id="@+id/messagedetail_row_date"
              Android:layout_width="wrap_content"
              Android:layout_height="wrap_content"
              Android:textColor="#000000"
              Android:paddingTop="2px"
              Android:textSize="12dip"
              Android:layout_marginLeft="60dip"
              Android:layout_gravity="right"/>
                            
          </LinearLayout>              

</LinearLayout>
[java]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    >
    
    <RelativeLayout  
        Android:layout_height="wrap_content"  
        Android:layout_width="wrap_content"  
        Android:id="@+id/linearLayout1">
        
    <ListView  
        Android:id="@+id/list"  
        Android:layout_width="fill_parent"  
        Android:layout_height="380px"
        Androidcrollbars="none"
        ></ListView>
            
            
        <EditText  
        Android:id="@+id/MessageText"  
        Android:layout_height="wrap_content"        
        Android:layout_width="wrap_content"
        Android:hint="点击输入信息:"
                
        Android:layout_alignParentBottom="true"
        Android:layout_alignParentLeft="true"
        Android:layout_alignRight="@+id/nulltext"        
        ></EditText>
        
        <TextView
            Android:id="@+id/nulltext"  
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            
            Android:layout_below="@+id/list"
            Android:layout_toLeftOf ="@+id/MessageButton"                    
            ></TextView>
        
       <Button  
         Android:id="@+id/MessageButton"  
         Android:text="发送"  
         Android:layout_width="wrap_content"  
         Android:layout_height="wrap_content"
          
         Android:layout_below="@+id/list"
         Android:layout_alignTop="@+id/nulltext"
         Android:layout_alignParentRight="true"
        
        ></Button>          
    </RelativeLayout>
    
    
    
    
</LinearLayout>



喜欢0 评分0
游客

返回顶部