ListView
1.ListVeiw 用來展示列表的View。
2.適配器 用來把數據映射到ListView上的中介。
3.數據 具體的將被映射的字符串,圖片,或者基本組件。
根據列表的適配器類型,列表分為三種,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
其中以ArrayAdapter最為簡單,只能展示一行字。SimpleAdapter有最好的擴充性,可以自定義出各種效果。SimpleCursorAdapter可以認為是SimpleAdapter對數據庫的簡單結合,可以方面的把數據庫的內容以列表的形式展示出來。
接着上一篇的布局:顯示列表仿照聊天,也是一樣添加LinearLayout文件,添加ListView控件
<ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView>
添加布局文件,顯示圖片和聊天記錄
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView //顯示圖片 android:id="@+id/imageView1" android:layout_width="80dp" android:layout_height="80dp" android:layout_marginTop="10dp" android:layout_marginLeft="13dp" android:src="@drawable/lad" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical" > <TextView //顯示名字 android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:textSize="15dp" android:textStyle="bold" android:layout_marginLeft="10dp" android:text="TextView" /> <TextView //顯示聊天信息 android:id="@+id/mess" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="20dp" android:textSize="15dp" android:text="TextView" /> </LinearLayout> <TextView //時間 android:id="@+id/date" android:layout_marginTop="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="13dp" android:text="TextView" /> </LinearLayout>
接下來就是主要代碼了,添加一個類,顯示
public class mess { private String lad; private String name; private String messeng; private String date; public String getLad() { return lad; } public void setLad(String lad) { this.lad = lad; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMesseng() { return messeng; } public void setMesseng(String messeng) { this.messeng = messeng; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } }
MainActivity類
public class MainActivity extends Activity { private ListView lv; //集合 private List<mess> messagetlist=new ArrayList<mess>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.wei); //循環讀取數據,模仿數據庫 for (int i = 0; i <50; i++) { mess me=new mess(); //添加數據 me.setLad("喜歡"); me.setName("胡"); me.setMesseng("最近過的還好嗎"); me.setDate("2016-11-25"); //添加到集合 messagetlist.add(me); } //查找listView1對象 lv=(ListView)findViewById(R.id.listView1); lv.setAdapter(new BaseAdapter() { @Override public int getCount() { return messagetlist.size();//集合的大小 } //每一個item項,返回一次界面 @Override public View getView(int position, View convertView, ViewGroup parent) { View view=null; //布局不變,數據變 //如果緩存為空,我們生成新的布局作為1個item if(convertView==null) { Log.i("info","沒有緩存,重新生成"+position); LayoutInflater ter=MainActivity.this.getLayoutInflater(); //因為getView()返回的對象,adapter會自動賦給ListView view=ter.inflate(R.layout.img,null); } else { Log.i("info","有緩存,不需要重新生成"+position); view=convertView; } mess m=messagetlist.get(position); //讀取數據 TextView tv1=(TextView)view.findViewById(R.id.name); tv1.setText(m.getName() ); tv1.setTextSize(15); TextView tv2=(TextView)view.findViewById(R.id.mess); tv2.setText(m.getMesseng()); tv2.setTextSize(12); TextView tv3=(TextView)view.findViewById(R.id.date); tv3.setText(m.getDate()); tv3.setTextSize(12); return view; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } }); } }
效果圖
這就是微信界面了。