这几天看了些聊天式对话效果,自己修改了一番。
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>