安卓:Day5 列表视图
生活随笔
收集整理的這篇文章主要介紹了
安卓:Day5 列表视图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.列表視圖的介紹
列表視圖是android中最常用的一種視圖組件,它以垂直列表的形式列出需要顯示的列表項。
在android中有兩種方法向屏幕中添加列表視圖:
一種是直接使用ListView組件創建;
另外一種是讓Activity繼承ListActivity實現。
二.華老師的關于列表視圖的思維導圖
(放在這兒,怕以后找不到)
三.基于數組適配器使用列表視圖
四.案例:閱讀故事
1.建立ReadAncientPoetry的文件
2.準備好背景圖片,放到drawable文件下
3.在布局資源文件下面建立好ListView,將限定布局改為線性布局
4. 注意:ListView中常用的屬性
(1).android:divider
(2).android:dividerHeight
(3).android:entries
(4).android:footerDividersEnabled
(5).android:headerDividersEnabled
(6).ListView主要使用的方法:
5.準備數據源
List mAddHeaderFooterList = new ArrayList<String>();6.將數據源添加到適配器中
ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mAddHeaderFooterList);7.將適配器中的數據添加到ListView中
mListView.setAdapter(adapter);8.添加詩歌列表項模板poem_list_item.xml
9.字符串的資源文件String.xml
<resources> <string name="app_name">閱讀古詩</string> <string-array name="titles"> <item>靜夜思</item> <item>登鸛雀樓</item> <item>相思</item> <item>聽彈琴</item> <item>登樂游原</item> <item>朝發白帝城</item> <item>巴山夜雨</item> <item>渭城曲</item> <item>春夜喜雨</item> <item>離離原上草</item> <item>示兒</item> </string-array> <string-array name="authors"> <item>唐·李白</item> <item>唐·王之渙</item> <item>唐·王維</item> <item>唐·劉長卿</item> <item>唐·李商隱</item> <item>唐·李白</item> <item>唐·杜牧</item> <item>唐·王維</item> <item>唐·杜甫</item> <item>唐·白居易</item> <item>宋·陸游</item> </string-array> <string-array name="contents"> <item>床前明月光,\n疑是地上霜。\n舉頭望明月,\n低頭思故鄉。</item> <item>白日依山盡,\n黃河入海流。\n欲窮千里目,\n更上一層樓。</item> <item>紅豆生南國,\n春來發幾枝。\n愿君多采擷,\n此物最相思。</item> <item>泠泠七弦上,\n靜聽松風寒。\n古調雖自愛,\n今人多不彈。</item> <item>向晚意不適,\n驅車登古原。\n夕陽無限好,\n只是近黃昏。</item> <item>朝辭白帝彩云間,\n千里江陵一日還。\n兩岸猿聲啼不住,\n輕舟已過萬重山。</item> <item>君問歸期未有期,\n巴山夜雨漲秋池。\n何當共剪西窗燭,\n卻話巴山夜雨時。</item> <item>渭城朝雨浥輕塵,\n客舍青青柳色新。\n勸君更盡一杯酒,\n西出陽關無故人。</item> <item>好雨知時節,當春乃發生。\n隨風潛入夜,潤物細無聲。\n野徑云俱黑,江船火獨明。\n曉看紅濕處,花重錦官城。</item> <item>離離原上草,一歲一枯榮。\n野火燒不盡,春風吹又生。\n遠芳侵古道,晴翠接荒城。\n又送王孫去,萋萋滿別情。</item> <item>死去元知萬事空,\n但悲不見九州同。\n王師北定中原日,\n家祭無忘告乃翁。 </item> </string-array> </resources>10.主頁面MainActivity.xml
(1)聲明變量
(2)通過資源標識符獲取控件實例
(3)初始化古詩標題數組
(4)創建數組適配器
(5)給列表控件設置適配器
(6)代碼提示
package net.yuanjing.readancientpoetry;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView;public class MainActivity extends AppCompatActivity {private ListView lvPoemTitle; //顯示古詩標題的列表控件 - 展示private ArrayAdapter<String> adapter; // 數組適配器 - 橋梁private String[] strPoemTitles; // 古詩標題數組 - 數據源@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//利用布局資源文件設置用戶界面setContentView(R.layout.activity_main);// 通過資源標識符獲取控件實例lvPoemTitle = findViewById(R.id.lvPoemTitle);// 初始化古詩標題數組,作為數據源String[] titles = getResources().getStringArray(R.array.titles);strPoemTitles = new String[titles.length];for (int i = 0; i < strPoemTitles.length; i++) {strPoemTitles[i] = (i + 1) + ". " + titles[i];}// 創建數組適配器adapter = new ArrayAdapter<>(this,// 參數1:上下文環境android.R.layout.simple_list_item_1,// 列表項模板strPoemTitles // 數據源 - 數組);// 給列表控件設置適配器lvPoemTitle.setAdapter(adapter);} }(7)運行的效果
11.采用平臺提供的列表項模板資源,看一哈效果
注意:一頁沒有顯示完全的古詩標題,可以通過手勢滑動看到其余的列表項
12.單擊列表項,彈出吐司,顯示古詩名及其編號
(1)修改主界面類,給列表控件注冊項目單擊監聽器
(2)參數position是用戶單擊列表項的位置,從0開始的,比如用戶單擊了第3個列表項,那么position就等于2,也就是說,position要加1才是行號。
(3)參數id的值與參數position的值相等,兩個參數只是類型不同而已。
(4)查看運行的效果
13.創建顯示古詩內容的界面 - ContentActivity
(1).基于模板創建ContentActivity
(2).內容界面布局資源文件content_activity.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"android:orientation="vertical"android:padding="10dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/tvIcon"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginRight="20dp"android:layout_weight="0.5"android:text="@string/icon"android:textSize="20sp" /><TextViewandroid:id="@+id/tvName"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="@string/name"android:textSize="20sp" /><TextViewandroid:id="@+id/tvPhone"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1.5"android:text="@string/phone"android:textSize="20sp" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:layout_marginTop="5dp"android:layout_marginBottom="5dp"android:background="#aaaaaa" /><ListViewandroid:id="@+id/lvContact"android:layout_width="match_parent"android:layout_height="wrap_content"> </ListView> </LinearLayout>(3).創建String
(4).通過資源標識符獲取控件實例
(5).獲取窗口跳轉的意圖,獲取意圖攜帶的數據,進行相應的處理
(6).返回目錄按鈕單擊事件處理方法
14.代碼提示:
package net.yuanjing.readancientpoetry;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;public class ContentActivity extends AppCompatActivity {private TextView tvTitle;private TextView tvAuthor;private TextView tvContent;private String[] titles;private String[] authors;private String[] contents;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_content);// 通過資源標識符獲取控件實例tvTitle = findViewById(R.id.tvTitle);tvAuthor = findViewById(R.id.tvAuthor);tvContent = findViewById(R.id.tvContent);//獲取窗口跳轉的意圖Intent intent = getIntent();//判斷意圖是否為空if (intent != null) {//獲取意圖攜帶的數據int position = intent.getIntExtra("position", 0);//獲取古詩標題數組titles = getResources().getStringArray(R.array.titles);//獲取古詩作者數組authors = getResources().getStringArray(R.array.authors);//獲取古詩內容數組contents = getResources().getStringArray(R.array.contents);//設置古詩標題標簽文本tvTitle.setText(titles[position]);//設置古詩作者標簽文本tvAuthor.setText(authors[position]);//設置古詩內容標簽文本tvContent.setText(contents[position]);}}public void doBack(View view) {finish();} }15.修改主界面類,實現窗口跳轉
代碼:
package net.yuanjing.readancientpoetry;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast;public class MainActivity extends AppCompatActivity {private ListView lvPoemTitle; //顯示古詩標題的列表控件 - 展示private ArrayAdapter<String> adapter; // 數組適配器 - 橋梁private String[] strPoemTitles; // 古詩標題數組 - 數據源@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//利用布局資源文件設置用戶界面setContentView(R.layout.activity_main);// 通過資源標識符獲取控件實例lvPoemTitle = findViewById(R.id.lvPoemTitle);// 初始化古詩標題數組,作為數據源String[] titles = getResources().getStringArray(R.array.titles);strPoemTitles = new String[titles.length];for (int i = 0; i < strPoemTitles.length; i++) {strPoemTitles[i] = (i + 1) + ". " + titles[i];}// 創建數組適配器adapter = new ArrayAdapter<>(this,// 參數1:上下文環境R.layout.poem_list_item,// 列表項模板strPoemTitles // 數據源 - 數組);// 給列表控件設置適配器lvPoemTitle.setAdapter(adapter);//給列表控件注冊項目單機監聽器lvPoemTitle.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {Toast.makeText(MainActivity.this,"你選擇了第" + (position + 1)+ "首古詩【" + titles[position] + "】",Toast.LENGTH_LONG).show();//創建窗口跳轉的意圖Intent intent = new Intent(MainActivity.this,ContentActivity.class);//通過意圖攜帶數據intent.putExtra("position",position);//按照意圖啟動目標組件startActivity(intent);}});} }16.效果展示:
總結
以上是生活随笔為你收集整理的安卓:Day5 列表视图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 运行--命令大全
- 下一篇: Idel中maven全局配置