ListView是Android中常用的控件之一,用于資料展示。是以需要提供資料供展示,但是資料部呢個直接傳遞給ListView,是以需要擴充卡進行傳遞。
1、簡單的ListView使用
如果展示清單中不需要展示複雜的東西,則使用ArrayAdapter擴充卡就可以實作。執行個體如下:
(1)activity_main.xml
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
android:id="@+id/list_view1"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
在此布局中個ListView控件。
(2)MainActivity.java
package com.example.testviewlist;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
private String[] viewListData = {"姓名:yy","微網誌:殘缺的孤獨","微信公衆号:殘缺的孤獨","工作地:北京","感悟:要麼強大,要麼聽話"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//擷取ListView
ListView listView = (ListView) findViewById(R.id.list_view1);
//擴充卡
ArrayAdapter adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, viewListData);
//使用擴充卡傳遞資料
listView.setAdapter(adapter);
//添加點選事件
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position,
long id) {
String info = viewListData[position];
Toast.makeText(MainActivity.this, info, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
(3)結果展示
運作,見如下效果:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SM1IjZmNzY5YzY4MjY2QDMwUTMyIGOkVGZlV2YxQmNh9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
點選效果如下:
2、ListView之标題使用
使用SimpleAdapter擴充卡可以實作各種布局,擴充性好。使用SimpleAdapter時,資料一般是由HashMap組成的List,List每一行對應于ListView的一行。HashMap中的key-value資料映射到布局檔案中對應的id元件上。接着上方繼續修改。
(1)activity_main.xml
保持不變
(2)修改MainActivity.java
package com.example.testviewlist;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
//private String[] viewListData = {"姓名:yy","微網誌:殘缺的孤獨","微信公衆号:殘缺的孤獨","工作地:北京","感悟:要麼強大,要麼聽話"};
private String[] vl_title = {"姓名","微網誌","微信公衆号","工作地","感悟"};
private String[] vl_info = {"yy","殘缺的孤獨","殘缺的孤獨","北京","要麼強大,要麼聽話"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//擷取ListView對象
ListView listView = (ListView) findViewById(R.id.list_view1);
List> listData= new ArrayList>();;
for(int i=0;i
//組裝Map資料
Map dataMap = new HashMap();
dataMap.put("title", vl_title[i]);
dataMap.put("info", vl_info[i]);
listData.add(dataMap);
}
//擴充卡
SimpleAdapter adapter = new SimpleAdapter(this,listData,android.R.layout.simple_list_item_2,
new String[]{"title","info"},new int[]{android.R.id.text1,android.R.id.text2});
listView.setAdapter(adapter);
//添加點選事件
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position,
long id) {
String title = vl_title[position];
String info = vl_info[position];
Toast.makeText(MainActivity.this, title + ": " + info, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
在使用SimpleAdapter的此構造函數中:第一個參數為上下文,第二個參數為資料,第三個參數是布局檔案,第四個參數為資料項的key,第五個參數為要填充的元件。
(3)效果
效果如下圖展示: