转载请注明原文出处:http://blog.youkuaiyun.com/yf210yf
这几天看了些聊天式对话效果,自己修改了一番。
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 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 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)
{
}
}
<?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
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"
>
<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"
android:scrollbars="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>