Android開發之ListView
阿新 • • 發佈:2019-02-08
在安卓開發中,List View很常用,通過List View使應用程式可以在一個頁面顯示多個條目資訊,並且每個條目資訊佈局是一樣的。
以下是一個例項:
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:layout_width ="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll_farmInfo"
android:layout_width="match_parent"
android:layout_height="30dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="center"
android:text="棚區"
android:layout_marginTop="8dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="center"
android:text="面積"
android:layout_marginTop="8dp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="作物"
android:layout_marginTop="8dp" />
<TextView
android:id="@+id/textView4"
android:layout_width="72dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text=""
android:layout_marginTop="8dp" />
</LinearLayout>
<ListView
android:id="@+id/lv_farmland"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/ll_farmInfo">
</ListView>
</LinearLayout>
activity_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_area"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="center"
android:text="A棚區" />
<TextView
android:id="@+id/tv_plantArea"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="center"
android:text="TextView" />
<TextView
android:id="@+id/tv_plant"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="TextView" />
<Button
android:id="@+id/bt_showInfo"
android:layout_width="72dp"
android:layout_height="38dp"
android:text="檢視" />
</LinearLayout>
主程式MainActivity.class
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
String[] from={"area","plantArea","plant"}; //這裡是ListView顯示內容每一列的列名
int[] to={R.id.tv_area,R.id.tv_plantArea,R.id.tv_plant}; //這裡是ListView顯示每一列對應的list_item中控制元件的id
private String[] area = {"A","B","C","D","E","F","G","H","I","J"};
private String[] plantArea = {"1","2","3","4","5","6","7","8","9","10"};
private String[] plants = {"A","B","C","D","E","F","G","H","I","J"};
ArrayList<HashMap<String,String>> list=null;
HashMap<String,String> map=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//建立ArrayList物件;
list=new ArrayList<HashMap<String,String>>();
//將資料存放進ArrayList物件中,資料安排的結構是,ListView的一行資料對應一個HashMap物件,
//HashMap物件,以列名作為鍵,以該列的值作為Value,將各列資訊新增進map中,然後再把每一列對應
//的map物件新增到ArrayList中
for(int i=0; i<10; i++){
map=new HashMap<String,String>(); //為避免產生空指標異常,有幾列就建立幾個map物件
map.put("area", area[i]);
map.put("plantArea", plantArea[i]);
map.put("plant",plants[i]);
list.add(map);
}
//建立一個SimpleAdapter物件
SimpleAdapter adapter=new SimpleAdapter(this,list,R.layout.activity_list_item,from,to);
//呼叫ListActivity的setListAdapter方法,為ListView設定介面卡
ListView listView = (ListView)findViewById(R.id.lv_farmland);
listView.setAdapter(adapter);
}
}
這裡只是使用了SimpleAdapter,比較適用於文字顯示。