Androidstudio中listView視圖列表控件的使用小練習


 

 

Androidstudio中listView視圖列表控件的使用小練習

 

              ————安德風

 

 

一、制作水果列表清單(帶圖標版)最終效果演示:

 

 

1、布局設計

 

 

 

 

①activity_main.xml源代碼

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context=".MainActivity">
 7     <ListView
 8         android:layout_width="match_parent"
 9         android:layout_height="match_parent"
10         android:id="@+id/listview"></ListView>
11 </LinearLayout>

②fruit_item.xml水果清單布局源代碼

 1 <LinearLayout
 2     xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="wrap_content"
 5     >
 6     <ImageView
 7         android:layout_width="wrap_content"
 8         android:layout_height="wrap_content"
 9         android:id="@+id/fruit_image"/>
10     <TextView
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"
13         android:id="@+id/fruitname"
14         android:layout_gravity="center_vertical"
15         android:layout_marginLeft="10dp"/>
16 </LinearLayout>

 

2、功能實現:

 

 

 

 

①MainActivity.java源代碼

 1 package com.example.lineview;
 2 
 3 import androidx.appcompat.app.AppCompatActivity;
 4 
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.AdapterView;
 8 import android.widget.ArrayAdapter;
 9 import android.widget.ListView;
10 import android.widget.Toast;
11 
12 import java.util.ArrayList;
13 import java.util.List;
14 
15 public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
16     private List<fruit> fruitList = new ArrayList<>();//聲明水果列表清單
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.activity_main);
21         initFruits();// 初始化水果數據
22 
23         FruitAdapter arrayAdapter = new FruitAdapter(MainActivity.this,R.layout.fruit_item,fruitList);
24 
25         ListView listView = (ListView) findViewById(R.id.listview);
26         listView.setAdapter(arrayAdapter);
27 
28 //        //ArraryAdapter適配器,通過泛型來指定要適配的數據類型,然后在構造函數中把要適配的數據傳入。
29 //        ArrayAdapter<String> arrayAdapter= new ArrayAdapter<String>(
30 //                MainActivity.this, android.R.layout.simple_list_item_1,fruits);
31 //        ListView listView = (ListView) findViewById(R.id.listview);
32 //        listView.setAdapter(arrayAdapter);
33         listView.setOnItemClickListener(this);
34 
35     }
36 
37 
38 //水果添加圖片以及文字設置
39 
40     private void initFruits(){
41 
42 //            fruit apple = new fruit("蘋果",R.drawable.apple);
43 //            fruitList.add(apple);
44 //            fruit banana = new fruit("香蕉",R.drawable.banana_pic);
45 //            fruitList.add(banana);
46 //            fruit orange = new fruit("橙子",R.drawable.orange_pic);
47 //            fruitList.add(orange);
48             fruit watermelon = new fruit("西瓜",R.drawable.xigua);
49             fruitList.add(watermelon);
50             fruit taozi = new fruit("桃子",R.drawable.taozi);
51             fruitList.add(taozi);
52             fruit xiangjiao = new fruit("香蕉",R.drawable.banana);
53             fruitList.add(xiangjiao);
54             fruit apple = new fruit("蘋果",R.drawable.apple);
55             fruitList.add(apple);
56             fruit orange= new fruit("橙子",R.drawable.orange);
57             fruitList.add(orange);
58             fruit lizi= new fruit("梨子",R.drawable.lizi);
59             fruitList.add(lizi);
60 
61 
62     }
63 
64 //實現點擊水果清單中任何一項水果出現響應的彈出框功能
65     @Override
66     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
67        fruit fruit = fruitList.get(position);
68         Toast.makeText(MainActivity.this,fruit.getName(),Toast.LENGTH_SHORT).show();
69     }
70 }

②fruit.java 水果清單封裝聲明功能

 

 1 package com.example.lineview;
 2 
 3 public class fruit {
 4     private String name;
 5     private int imageId;
 6     public fruit (String name,int imageId){
 7         this.name = name;
 8         this.imageId = imageId;
 9     }
10     public String getName() {
11         return name;
12     }
13     public int getImageId() {
14         return imageId;
15     }
16 }

 

③FruitAdapter水果適配器功能設置

 

 1 package com.example.lineview;
 2 
 3 import android.content.Context;
 4 import android.view.LayoutInflater;
 5 import android.view.View;
 6 import android.view.ViewGroup;
 7 import android.widget.ArrayAdapter;
 8 import android.widget.ImageView;
 9 import android.widget.TextView;
10 
11 import com.example.lineview.R;
12 import com.example.lineview.fruit;
13 
14 import java.util.List;
15 
16 public class FruitAdapter extends ArrayAdapter<fruit> {
17 
18     private int resourceId;
19 
20     public FruitAdapter(Context context, int textViewResourceId, List<fruit> objects){
21         super(context,textViewResourceId,objects);
22         resourceId = textViewResourceId;
23 
24     }
25 
26 
27     @Override
28     public View getView(int position, View convertView, ViewGroup parent){
29         fruit fruit = getItem(position); //獲取當前項的Fruit實例
30         View view= LayoutInflater.from(getContext()).inflate(resourceId,parent,false);
31         ImageView fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
32         TextView fruitName =(TextView) view.findViewById(R.id.fruitname);
33         fruitImage.setImageResource(fruit.getImageId());
34         fruitName.setText(fruit.getName());
35         return view;
36     }
37 }

 

 

二、制作水果列表清單(無圖標版)最終效果演示:

 

1、界面布局設計activity_main.xml源代碼

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context=".MainActivity">
 8 
 9     <ListView
10         android:id="@+id/listview"
11         android:layout_width="368dp"
12         android:layout_height="623dp"
13         app:layout_constraintBottom_toBottomOf="parent"
14         app:layout_constraintEnd_toEndOf="parent"
15         app:layout_constraintHorizontal_bias="0.609"
16         app:layout_constraintStart_toStartOf="parent"
17         app:layout_constraintTop_toTopOf="parent"
18         app:layout_constraintVertical_bias="0.496" />
19 </androidx.constraintlayout.widget.ConstraintLayout>

2、功能實現MainActivity.java

 

 1 package com.example.myapplication2;
 2 
 3 import androidx.appcompat.app.AppCompatActivity;
 4 
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.AdapterView;
 8 import android.widget.ArrayAdapter;
 9 import android.widget.ListView;
10 import android.widget.TextView;
11 import android.widget.Toast;
12 
13 public class MainActivity extends AppCompatActivity {
14 private  String[]fruits={
15 "蘋果","黑莓","橙子","海棠果","公爵櫻桃","獼猴桃","西洋李子","無花果","哈密瓜","水蜜桃",
16     };
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.activity_main);
21         //ArraryAdapter適配器,通過泛型來指定要適配的數據類型,然后在構造函數中把要適配的數據傳入
22         ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,fruits);
23 //Android中提供了很多適配器,這里使用的是ArrayAdapter,它可以通過泛型來指定要適配的數據類型,然后在構造函數中把要適配的數據傳入。
24 /**
25  * 因為數據都是字符串,所以ArrayAdapter的泛型指定為String。
26  * ArrayAdapter的構造函數傳入3個數據:
27  *
28  * 1是Context 傳入當前的上下文
29  * 2是ListView子項布局的ID
30  * 3是要適配的數據
31  *android.R.layout.simple_list_item_1作為ListView子項布局的ID,這時安卓內置的布局文件。里面只有一個TextView,可用於顯示一段文本。
32  *
33  * 最后調用ListView的setAdapter()方法將構建好的適配器對象傳遞進去。
34  *
35  *
36  */
37 
38 
39         ListView listView=findViewById(R.id.listview);//尋找列表視圖id
40         listView.setAdapter(arrayAdapter);//列表視圖創建適配器(Adapter)=》數組中的數據無法直接傳遞給ListView,這時需要借助適配器(Adapter)來完成。
41 
42         //列表視圖建立監聽器(OnItemClickListener)
43         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
44             @Override
45             public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
46                 //彈出框輸出兩種方式
47                 //方法一:調用view參數實現彈出框輸出
48                 Toast.makeText(MainActivity.this, ((TextView)view).getText(), Toast.LENGTH_SHORT).show();
49 
50      
51                 //方法二:通過switch多分支選擇數組實現彈出框輸出
52 //                switch (i){
53 //                    case 0:
54 //                        Toast.makeText(MainActivity.this, fruits[0], Toast.LENGTH_SHORT).show();
55 //                        break;
56 //                    case 1:
57 //                        Toast.makeText(MainActivity.this, fruits[1], Toast.LENGTH_SHORT).show();
58 //                        break;
59 //                    case 2:
60 //                        Toast.makeText(MainActivity.this, fruits[2], Toast.LENGTH_SHORT).show();
61 //                        break;
62 //                    case 3:
63 //                        Toast.makeText(MainActivity.this, fruits[3], Toast.LENGTH_SHORT).show();
64 //                        break;
65 //                    case 4:
66 //                        Toast.makeText(MainActivity.this, fruits[4], Toast.LENGTH_SHORT).show();
67 //                        break;
68 //                    case 5:
69 //                        Toast.makeText(MainActivity.this, fruits[5], Toast.LENGTH_SHORT).show();
70 //                        break;
71 //                    case 6:
72 //                        Toast.makeText(MainActivity.this, fruits[6], Toast.LENGTH_SHORT).show();
73 //                        break;
74 //                    case 7:
75 //                        Toast.makeText(MainActivity.this, fruits[7], Toast.LENGTH_SHORT).show();
76 //                        break;
77 //                    case 8:
78 //                        Toast.makeText(MainActivity.this, fruits[8], Toast.LENGTH_SHORT).show();
79 //                        break;
80 //                    case 9:
81 //                        Toast.makeText(MainActivity.this, fruits[9], Toast.LENGTH_SHORT).show();
82 //                        break;
83 //                }
84             }
85         });
86 
87 
88 
89 
90 
91 
92     }
93 }

三、制作水果列表清單Toast彈出框帶圖片版

1、最終效果演示:


2、功能實現MainActivity(布局設計跳過與前面的布局設計一樣不作過多的贅述)

  1 package com.example.listview4;
  2 
  3 import androidx.appcompat.app.AppCompatActivity;
  4 
  5 import android.os.Bundle;
  6 import android.view.View;
  7 import android.widget.AdapterView;
  8 import android.widget.ArrayAdapter;
  9 import android.widget.ImageView;
 10 import android.widget.LinearLayout;
 11 import android.widget.ListView;
 12 import android.widget.TextView;
 13 import android.widget.Toast;
 14 
 15 public class MainActivity extends AppCompatActivity {
 16     private  String[]fruits={
 17             "蘋果","黑莓","橙子","海棠果","公爵櫻桃","獼猴桃","西洋李子","無花果","哈密瓜","水蜜桃",
 18 
 19     };
 20     private  int[] imgs={
 21             R.drawable.apple,R.drawable.heimei,R.drawable.orange,R.drawable.htg,R.drawable.yingtao,R.drawable.mht,
 22             R.drawable.xylz,R.drawable.whg,R.drawable.hmg,R.drawable.smt,
 23     };
 24     @Override
 25     protected void onCreate(Bundle savedInstanceState) {
 26         super.onCreate(savedInstanceState);
 27         setContentView(R.layout.activity_main);
 28         //ArraryAdapter適配器,通過泛型來指定要適配的數據類型,然后在構造函數中把要適配的數據傳入
 29         ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,fruits);
 30 //Android中提供了很多適配器,這里使用的是ArrayAdapter,它可以通過泛型來指定要適配的數據類型,然后在構造函數中把要適配的數據傳入。
 31 /**
 32  * 因為數據都是字符串,所以ArrayAdapter的泛型指定為String。
 33  * ArrayAdapter的構造函數傳入3個數據:
 34  *
 35  * 1是Context 傳入當前的上下文
 36  * 2是ListView子項布局的ID
 37  * 3是要適配的數據
 38  *android.R.layout.simple_list_item_1作為ListView子項布局的ID,這時安卓內置的布局文件。里面只有一個TextView,可用於顯示一段文本。
 39  *
 40  * 最后調用ListView的setAdapter()方法將構建好的適配器對象傳遞進去。
 41  *
 42  *
 43  */
 44 
 45 
 46         ListView listView=findViewById(R.id.listview);//尋找列表視圖id
 47         listView.setAdapter(arrayAdapter);//列表視圖創建適配器(Adapter)=》數組中的數據無法直接傳遞給ListView,這時需要借助適配器(Adapter)來完成。
 48 
 49         //列表視圖建立監聽器(OnItemClickListener)
 50         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 51             @Override
 52             public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
 53                 //彈出框輸出兩種方式
 54                 //方法一:調用view參數實現彈出框輸出
 55               Toast toast=  Toast.makeText(MainActivity.this, ((TextView)view).getText(), Toast.LENGTH_SHORT);
 56 
 57                 ImageView imageView=new ImageView(MainActivity.this);//圖片控件實例化
 58                 imageView.setImageResource(imgs[i]);//通過數組的方式加載圖片
 59                 LinearLayout toastview= (LinearLayout) toast.getView();//通過線性布局方式彈出框輸出圖片 
 60                 toastview.setOrientation(LinearLayout.VERTICAL);//圖片垂直輸出(線性布局格式)
 61                 toastview.addView(imageView);//導入圖片控件
 62 
 63                 toast.show();//彈出框展示
 64 
 65                 //方法二:通過switch多分支選擇數組實現彈出框輸出
 66 //                switch (i){
 67 //                    case 0:
 68 //                        Toast.makeText(MainActivity.this, fruits[0], Toast.LENGTH_SHORT).show();
 69 //                        break;
 70 //                    case 1:
 71 //                        Toast.makeText(MainActivity.this, fruits[1], Toast.LENGTH_SHORT).show();
 72 //                        break;
 73 //                    case 2:
 74 //                        Toast.makeText(MainActivity.this, fruits[2], Toast.LENGTH_SHORT).show();
 75 //                        break;
 76 //                    case 3:
 77 //                        Toast.makeText(MainActivity.this, fruits[3], Toast.LENGTH_SHORT).show();
 78 //                        break;
 79 //                    case 4:
 80 //                        Toast.makeText(MainActivity.this, fruits[4], Toast.LENGTH_SHORT).show();
 81 //                        break;
 82 //                    case 5:
 83 //                        Toast.makeText(MainActivity.this, fruits[5], Toast.LENGTH_SHORT).show();
 84 //                        break;
 85 //                    case 6:
 86 //                        Toast.makeText(MainActivity.this, fruits[6], Toast.LENGTH_SHORT).show();
 87 //                        break;
 88 //                    case 7:
 89 //                        Toast.makeText(MainActivity.this, fruits[7], Toast.LENGTH_SHORT).show();
 90 //                        break;
 91 //                    case 8:
 92 //                        Toast.makeText(MainActivity.this, fruits[8], Toast.LENGTH_SHORT).show();
 93 //                        break;
 94 //                    case 9:
 95 //                        Toast.makeText(MainActivity.this, fruits[9], Toast.LENGTH_SHORT).show();
 96 //                        break;
 97 //                }
 98             }
 99         });
100 
101 
102 
103 
104 
105 
106     }
107 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM