android学习笔记30--------------聊天式对话效果
4040 点击·0 回帖
![]() | ![]() | |
![]() | 这几天看了些聊天式对话效果,自己修改了一番。 ![]() 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> | |
![]() | ![]() |