• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 【Android學習筆記】ListView的用法

    基本使用

    創建工程ListViewTestProject,工程結構如下:

    編輯MainActivity的界面代碼,添加ListView組件:

    <?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">
    
        <ListView
            android:id="@+id/list_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    
    </LinearLayout>

    編輯MainActivity代碼,初始化數組Data,并為ListView添加適配器:

    package com.example.listviewtestproject;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    public class MainActivity extends AppCompatActivity {
    
        private String[] data = new String[26];
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //初始化data數據
            initData();
            //android.R.layout.simple_list_item_1是安卓內置的布局文件,data是包含數據的數組
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,data);
            ListView listView = findViewById(R.id.list_view);
            //為ListView添加適配器
            listView.setAdapter(adapter);
        }
    
        private void initData(){
            for(int i='a';i<='z';i++){
                String s = ""+(char)i+(char)i+(char)i;
                data[i-'a'] = s;
            }
        }
    }
    

    運行APP:

    接著為其添加點擊事件,點擊ListView的子項時,用Toast顯示當前子項內容:

    package com.example.listviewtestproject;
    
    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.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        private String[] data = new String[26];
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initData();
            //android.R.layout.simple_list_item_1是安卓內置的布局文件,data是包含數據的數組
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,data);
            ListView listView = findViewById(R.id.list_view);
            //為ListView添加適配器
            listView.setAdapter(adapter);
            //為ListView添加點擊事件
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                    //獲取數組中position位置的元素值,并用Toast展示出來
                    String s = data[position];
                    Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
                }
            });
        }
    
        private void initData(){
            for(int i='a';i<='z';i++){
                String s = ""+(char)i+(char)i+(char)i;
                data[i-'a'] = s;
            }
        }
    }
    

    運行APP,點擊ListView子項:

     進階用法

    定制ListView界面,每個ListView子項包含一前一后兩個TextView。先創建ListView子項的實例類Model:

    package com.example.listviewtestproject;
    
    public class Model {
    
       private String leftString;
       private String rightString;
    
        public String getLeftString() {
            return leftString;
        }
    
        public void setLeftString(String leftString) {
            this.leftString = leftString;
        }
    
        public String getRightString() {
            return rightString;
        }
    
        public void setRightString(String rightString) {
            this.rightString = rightString;
        }
    }
    

    接著需要為ListView的子項自定義一個布局文件,在layout目錄下新建model_item.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="wrap_content"
        android:orientation="horizontal"
        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
        android:minHeight="?android:attr/listPreferredItemHeightSmall"
        >
    
        <TextView
            android:id="@+id/left_text"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_vertical|left"
            />
    
        <TextView
            android:id="@+id/right_text"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_vertical|right"
            />
    
    </LinearLayout>

    然后我們需要創建一個自定義的適配器,新建類ModelAdapter:

    package com.example.listviewtestproject;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.TextView;
    import java.util.List;
    
    public class ModelAdapter extends ArrayAdapter<Model> {
    
        private int resourceId;
    
        public ModelAdapter(Context context, int textViewResourceId,List<Model> objects) {
            super(context, textViewResourceId, objects);
            resourceId = textViewResourceId;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            //獲取當前項的Model實例
            Model model = getItem(position);
            View view = LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
            //獲取當前ListView子項的控件
            TextView leftTextView =view.findViewById(R.id.left_text);
            TextView rightTextView =view.findViewById(R.id.right_text);
            leftTextView.setText(model.getLeftString());
            rightTextView.setText(model.getRightString());
            return view;
        }
    }
    

    最后修改MainActivity代碼,完成對ListView的界面及數據定制:

    package com.example.listviewtestproject;
    
    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.TextView;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        private List<Model> modelList = new ArrayList<>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initData();
            ModelAdapter adapter = new ModelAdapter(MainActivity.this,R.layout.model_item,modelList);
            ListView listView = findViewById(R.id.list_view);
            listView.setAdapter(adapter);
        }
    
        private void initData(){
            for(int i='a';i<='z';i++){
                String leftString = ""+(char)i+(char)i+(char)i;
                String rightString = ""+(char)(i-32)+(char)(i-32)+(char)(i-32);
                Model model = new Model();
                model.setLeftString(leftString);
                model.setRightString(rightString);
                modelList.add(model);
            }
        }
    }
    

    運行APP,效果如下:

    版權聲明:本文為A1344714150原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/A1344714150/article/details/102473914

    智能推薦

    【Android學習筆記】標準廣播的用法

    介紹 標準廣播是一種完全異步執行的廣播,在廣播發出之后,所有廣播幾乎都會同時接收到這條廣播消息,因此它們之間沒有任何先后順序可言。這種廣播的效率會比較高,但同時也意味著它是無法被截斷的。 發送標準廣播 創建新的工程NormalBroadcastTestProject,先編輯MainActivity的布局文件,放置一個發送標準廣播的按鈕: 然后編輯MainActivity的代碼,為按鈕添加點擊事件,...

    【Android學習筆記】Fragment的用法

    介紹 碎片(Fragment)是一種可以嵌入在活動之間的UI片段,它可以讓程序更加合理和充分地利用大屏幕的空間,由于它和活動非常相似,也可以將它簡單地理解成一個迷你的活動。 基本用法 新建一個FragmentTestProject工程,創建一個左側布局文件left_fragment.xml,內容如下: 然后新建右側碎片布局文件right_fragment.xml,背景色設為紅色并為其添加一個Tex...

    【Android學習筆記】RecyclerView的用法

    介紹 由于ListView存在各種不足并且無法實現橫向滾動,Android提供了一個更強大的滾動組件——RecyclerView,不僅可以輕松實現和ListView同樣的效果,還優化了ListView中存在的各種不足之處。 基本用法 創建一個工程RecyclerViewTestProject,首先需要為項目添加RecyclerView相應的依賴庫,修改app/build.g...

    Android之ListView學習筆記--ListView基本使用

    ListView算是我們平時經常使用到的一個工具了(當然現在有RecyclerView作為代替),之前一篇講到ListView中的RecycleBin回收機制,這一篇先來大致講一下ListView里面的一些用法吧。 ListView布局 在布局里面設置下ListView就可以了。對于ListView而言,里面的子view的布局只有一種,就是垂直布局。而在RecyclerView中對此進行了改進,支...

    Android 學習筆記 -- ListView+MySQL

    正式看此文章前,請先瀏覽https://blog.csdn.net/weixin_44462664/article/details/102565639 實現登陸后在下個活動中顯示ListView 在 包名下 ? New ? 新建實體類 Item.java 文件 在layout目錄下 ? New ? XML ? Layout XML File 新建 item.xml布局文件作為ListView子項的...

    猜你喜歡

    Android組件學習筆記(ListView結構操作)

    跟著教程學習中,記下筆記 這次實現一個簡單類似電話簿的東西,不過使用了內部類,和一些比較快捷的結構操作 具體參數可自主調整 實現圖片: 代碼實現:有兩個布局文件: 一個總的,一個只是做出摸板,代碼: 和:...

    Android studio教程學習筆記10——ListView

    列表視圖ListView 在實際開發中實現列表、網格視圖,多用RecyclerView,這個ListView了解就行 常用屬性 Adapter接口 Demo演示 LayoutInflater類:(抽象類),將布局xml文件實例化為對應的View對象 View對象:可以暫時理解為一個頁面所有組件的一個超類 新建一個包: 之前都是直接新建empty activity,為了熟悉流程,現在自己從頭開始創建...

    ListView的基礎用法

    最近學到ListView和RecyclerView,感覺有點難理解,于是自己找到了篇文章,感覺寫的挺詳細的(文章鏈接在文末),然后自己再整理敲了跑了一遍,總結了一下,方便自己以后回頭溫習。 一個ListView的創建需要三個元素 ListView每一列的View 填入View的每一項數據(圖片,文字等) 連接數據與ListView的適配器 什么是適配器? 適配器是一個連接數據和AdapterVie...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    精品国产乱码久久久久久蜜桃不卡