列表類組件(列表視圖ListView)
- 列表視圖
以垂直列表的形式來列出需要顯示的列表項。這些列表項可以帶圖片,也可以不帶。
在activity_main.xml文件中,用ListView標籤來定義列表視圖。
- 屬性
- android:layout_width :取值爲match_parent,即與父容器相同。
- android:layout_height :取值爲wrap_content,即包裹自身內容。
- android:entries :設置列表視圖中每個列表項的內容。取值爲一個數組資源。在res/values目錄下新建一個array.xml,並使用string-array標籤和item標籤來設置列表視圖的內容:
android:entries取值爲該數組資源:
運行結果:
- 在Java代碼中通過適配器來指定列表項的內容:
首先,給列表視圖設置一個id,並註釋掉通過entries屬性設置列表項內容的代碼:
在Java代碼中進行如下操作:
package com.example.listviewdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends AppCompatActivity {
//定義一個列表視圖
ListView listView;
//定義一個String[]
String[] type=new String[]{"全部","電影","音樂","圖書"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//創建一個數組適配器.第一個參數是上下文對象;
//第二個參數是Android提供的佈局資源;
//第三個參數是保存列表項內容的String[]
ArrayAdapter adapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,type);
//獲取列表視圖
listView=findViewById(R.id.listview);
//設置listview的適配器爲adapter
listView.setAdapter(adapter);
}
}
運行結果:
- 獲取用戶點擊的某個列表項的內容:
爲列表視圖的每個列表項添加單擊事件監聽器
package com.example.listviewdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//定義一個列表視圖
ListView listView;
//定義一個String[]
String[] type=new String[]{"全部","電影","音樂","圖書"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//創建一個數組適配器.第一個參數是上下文對象;
//第二個參數是Android提供的佈局資源;
//第三個參數是保存列表項內容的String[]
ArrayAdapter adapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,type);
//獲取列表視圖
listView=findViewById(R.id.listview);
//設置listview的適配器爲adapter
listView.setAdapter(adapter);
//爲列表視圖的每一項設置單擊事件監聽器
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this,parent.getItemAtPosition(position).toString(),Toast.LENGTH_LONG).show();
}
});
}
}
運行結果: