ANDROID笔记:气泡对话(基于ListView和Adapter实现)

 1 package com.example.adaptertest.homework;

 2 

 3 import java.util.ArrayList;

 4 import java.util.Calendar;

 5 import java.util.List;

 6 

 7 import android.app.Activity;

 8 import android.os.Bundle;

 9 import android.view.View;

10 import android.view.View.OnClickListener;

11 import android.widget.Button;

12 import android.widget.CompoundButton;

13 import android.widget.CompoundButton.OnCheckedChangeListener;

14 import android.widget.EditText;

15 import android.widget.ListView;

16 import android.widget.ToggleButton;

17 

18 import com.example.adaptertest.R;

19 

20 public class ChatActivity extends Activity {

21     List<ChatContent> chatContents = null;

22     // 人物选择

23     boolean flag = false;

24 

25     @Override

26     protected void onCreate(Bundle savedInstanceState) {

27         // TODO Auto-generated method stub

28         super.onCreate(savedInstanceState);

29         setContentView(R.layout.activity_chat);

30         // 初始化控件

31         ToggleButton tbtn = (ToggleButton) findViewById(R.id.tbtn);

32         final EditText editText = (EditText) findViewById(R.id.edit);

33         Button button = (Button) findViewById(R.id.btn_send);

34         ListView listView = (ListView) findViewById(R.id.chat_list);

35         // 定义数据集合

36         chatContents = new ArrayList<ChatContent>();

37         // 初始化数据

38         chatContents.add(new ChatContent(flag, "你好", getTime()));

39         chatContents.add(new ChatContent(true, "nihao", getTime()));

40         chatContents.add(new ChatContent(flag, "hello", getTime()));

41         // 监听ToggleButton

42         tbtn.setOnCheckedChangeListener(new OnCheckedChangeListener() {

43             @Override

44             public void onCheckedChanged(CompoundButton buttonView,

45                     boolean isChecked) {

46                 // 改变角色

47                 flag = isChecked;

48             }

49         });

50         // 设置适配器

51         final ChatAdapter adapter = new ChatAdapter(ChatActivity.this,

52                 chatContents);

53         listView.setAdapter(adapter);

54         button.setOnClickListener(new OnClickListener() {

55 

56             @Override

57             public void onClick(View v) {

58                 if (!editText.getText().toString().equals("")) {

59                     chatContents.add(new ChatContent(flag, editText.getText()

60                             .toString(), getTime()));

61                 }

62                 // 输入框清空

63                 editText.setText("");

64                 // 通知适配器更新

65                 adapter.notifyDataSetChanged();

66             }

67         });

68 

69     }

70 

71     /**

72      * 得到当前时间

73      * 

74      * @return

75      */

76     private String getTime() {

77         Calendar ca = Calendar.getInstance();

78         int minute = ca.get(Calendar.MINUTE);//

79         int hour = ca.get(Calendar.HOUR);// 小时

80         int second = ca.get(Calendar.SECOND);//

81         return hour + ":" + minute + ":" + second;

82     }

83 }
 1 package com.example.adaptertest.homework;

 2 

 3 import java.util.List;

 4 

 5 import android.content.Context;

 6 import android.view.LayoutInflater;

 7 import android.view.View;

 8 import android.view.ViewGroup;

 9 import android.widget.BaseAdapter;

10 import android.widget.ImageView;

11 import android.widget.TextView;

12 

13 import com.example.adaptertest.R;

14 

15 public class ChatAdapter extends BaseAdapter {

16     LayoutInflater inflater = null;

17     List<ChatContent> chatContents;

18 

19     public ChatAdapter(Context convertView, List<ChatContent> chatContents) {

20         inflater = LayoutInflater.from(convertView);

21         this.chatContents = chatContents;

22     }

23 

24     @Override

25     public int getCount() {

26         // TODO Auto-generated method stub

27         return chatContents.size();

28     }

29 

30     @Override

31     public Object getItem(int position) {

32         // TODO Auto-generated method stub

33         return chatContents.get(position);

34     }

35 

36     @Override

37     public long getItemId(int position) {

38         // TODO Auto-generated method stub

39         return position;

40     }

41 

42     @Override

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

44         View view = null;

45         TextView time;

46         ImageView icon;

47         TextView msg;

48         // 判断角色

49         if (chatContents.get(position).isType()) {

50             // 加载控件

51             view = inflater.inflate(R.layout.chat_item_left, null);

52             time = (TextView) view.findViewById(R.id.left_time);

53             icon = (ImageView) view.findViewById(R.id.left_icon);

54             msg = (TextView) view.findViewById(R.id.left_textimage);

55         } else {

56             view = inflater.inflate(R.layout.chat_item_right, null);

57             time = (TextView) view.findViewById(R.id.right_time);

58             icon = (ImageView) view.findViewById(R.id.right_icon);

59             msg = (TextView) view.findViewById(R.id.right_textimage);

60         }

61         time.setText(chatContents.get(position).getTime());

62         msg.setText(chatContents.get(position).getMsg());

63 

64         return view;

65     }

66 }
 1 package com.example.adaptertest.homework;

 2 

 3 /**

 4  * POJO

 5  * 

 6  * @author Administrator

 7  * 

 8  */

 9 public class ChatContent {

10     private boolean type;

11     private String msg;

12     private String time;

13 

14     public String getTime() {

15         return time;

16     }

17 

18     public void setTime(String time) {

19         this.time = time;

20     }

21 

22     public boolean isType() {

23         return type;

24     }

25 

26     public void setType(boolean type) {

27         this.type = type;

28     }

29 

30     public String getMsg() {

31         return msg;

32     }

33 

34     public void setMsg(String msg) {

35         this.msg = msg;

36     }

37 

38     public ChatContent(boolean type, String msg, String time) {

39         super();

40         this.time = time;

41         this.type = type;

42         this.msg = msg;

43     }

44 

45 }
 1 <?xml version="1.0" encoding="utf-8"?>

 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:layout_width="fill_parent"

 4     android:layout_height="fill_parent"

 5     android:orientation="vertical" >

 6 

 7     <LinearLayout

 8         android:id="@+id/line"

 9         android:layout_width="fill_parent"

10         android:layout_height="50dp"

11         android:layout_alignParentBottom="true"

12         android:orientation="horizontal" >

13 

14         <ToggleButton

15             android:id="@+id/tbtn"

16             android:layout_width="wrap_content"

17             android:layout_height="wrap_content"

18             android:textOff="男"

19             android:textOn="女" />

20 

21         <EditText

22             android:id="@+id/edit"

23             android:layout_width="wrap_content"

24             android:layout_height="fill_parent"

25             android:layout_weight="0.67"

26             android:hint="填写信息"

27             android:singleLine="false" />

28 

29         <Button

30             android:id="@+id/btn_send"

31             android:layout_width="wrap_content"

32             android:layout_height="fill_parent"

33             android:text="发送" />

34     </LinearLayout>

35 

36     <ListView

37         android:id="@+id/chat_list"

38         android:layout_width="fill_parent"

39         android:layout_height="fill_parent"

40         android:layout_above="@id/line"

41         android:divider="@null"

42         android:scrollbars="none" >

43     </ListView>

44 

45 </RelativeLayout>
 1 <?xml version="1.0" encoding="utf-8"?>

 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     android:orientation="vertical" >

 6 

 7     <LinearLayout

 8         android:layout_width="fill_parent"

 9         android:layout_height="wrap_content"

10         android:orientation="horizontal" >

11 

12         <TextView

13             android:id="@+id/left_time"

14             android:layout_width="fill_parent"

15             android:layout_height="wrap_content"

16             android:gravity="center"

17             android:text="ddd" />

18     </LinearLayout>

19 

20     <LinearLayout

21         android:layout_width="wrap_content"

22         android:layout_height="wrap_content"

23         android:orientation="horizontal" >

24 

25         <ImageView

26             android:id="@+id/left_icon"

27             android:layout_width="50dp"

28             android:layout_height="50dp"

29             android:src="@drawable/woman" />

30 

31         <TextView

32             android:id="@+id/left_textimage"

33             android:layout_width="wrap_content"

34             android:layout_height="wrap_content"

35             android:singleLine="false"

36             android:background="@drawable/other" 

37             />

38     </LinearLayout>

39 

40 </LinearLayout>
 1 <?xml version="1.0" encoding="utf-8"?>

 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     android:orientation="vertical" >

 6 

 7     <LinearLayout

 8         android:layout_width="fill_parent"

 9         android:layout_height="wrap_content"

10         android:layout_gravity="right"

11         android:orientation="horizontal" >

12 

13         <TextView

14             android:id="@+id/right_time"

15             android:layout_width="fill_parent"

16             android:layout_height="wrap_content"

17             android:gravity="center"

18             android:text="ddd" />

19     </LinearLayout>

20 

21     <LinearLayout

22         android:layout_width="wrap_content"

23         android:layout_height="wrap_content"

24         android:layout_gravity="right"

25         android:orientation="horizontal" >

26 

27         <TextView

28             android:id="@+id/right_textimage"

29             android:layout_width="wrap_content"

30             android:layout_height="wrap_content"

31             android:layout_gravity="right"

32             android:background="@drawable/me"

33             android:singleLine="false" />

34 

35         <ImageView

36             android:id="@+id/right_icon"

37             android:layout_width="50dp"

38             android:layout_height="50dp"

39             android:layout_gravity="right"

40             android:src="@drawable/man" />

41     </LinearLayout>

42 

43 </LinearLayout>

 ANDROID笔记:气泡对话(基于ListView和Adapter实现)

注:

在listview中添加一行

// listview自动滚动至底端
 listView.setSelection(chatContents.size() - 1);

你可能感兴趣的:(ListView)