Adapter之ArrayAdapter以及監聽器設置


前言:

ArrayAdapter:支持泛型操作,最簡單的一個Adapter,只能展現一行文字~,我的學習就是通過這個最簡單的適配器開始

正文:

完成這個ArrayAdapter需要三步:1.初始化數據,2.初始化Adapter,3.初始化AdapterView下面通過代碼來演示

xml文件

1 <ListView
2         android:layout_width="match_parent"
3         android:layout_height="match_parent"
4         android:id="@+id/listview">
5     </ListView>

Java中文件

 1 package com.example.administrator.testadapter;
 2 
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.widget.ArrayAdapter;
 6 import android.widget.ListView;
 7 
 8 import java.util.ArrayList;
 9 import java.util.List;
10 
11 public class MainActivity extends AppCompatActivity {
12     private ListView listview;
13     private List<String> list;
14     private ArrayAdapter<String>adapter;
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         //初始化適配器View
20         listview=(ListView)findViewById(R.id.listview);
21         //初始化數據源
22         list =new ArrayList<String>();
23         for(int i=0;i<=20;i++){
24             list.add("數據"+i);
25         }
26         //初始化適配器
27         adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list); 28         //把適配器設置到適配器View
29         listview.setAdapter(adapter);
30     }
31 }

效果圖:

補充:

數據源除了集合外還可以有數組,另外也可以寫到一個數組資源文件中:比如:在res\valuse下創建一個數組資源的xml文件:arrays.xml

1 <?xml version="1.0" encoding="utf-8"?>  
2 <resources>  
3     <string-array name="myarray">  
4     <item>提莫</item>  
5     <item>奧巴馬</item>  
6     <item>蓋倫</item>  
7     </string-array>      
8 </resources>

27行代碼中,第二個參數(android.R.layout.simple_list_item_1)是系統提供的一個模板,統給我們提供好的一些ListView模板,有下面幾種:

simple_list_item_1 : 單獨一行的文本框

simple_list_item_2 : 兩個文本框組成

simple_list_item_checked : 每項都是由一個已選中的列表項

simple_list_item_multiple_choice : 都帶有一個復選框

simple_list_item_single_choice : 都帶有一個單選鈕  

另外自己寫的布局文件也是可以,代碼如下:

1 <?xml version="1.0" encoding="utf-8"?>
2 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
3      android:layout_width="match_parent"
4     android:layout_height="match_parent"
5     android:gravity="center"
6     android:text="顯示內容"
7     android:textSize="20sp"
8     android:padding="8dp"
9    />

這樣會讓單行文字居中顯示

下面給ListView添加監聽器

點擊事件

1  listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
2             @Override
3             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
4                 Toast.makeText(MainActivity.this, "你點擊的item是第" + position + "個", Toast.LENGTH_SHORT).show();
5             }
6         });

功能就是在你點擊ListView時會Toast一下

其中onItemClick方法中的參數:

parent:適配器設置到adapterView對象,這里表示ListView

view:適配器item對應的view

position:縮影位置

id:在ListView中的item的行id

長按點擊事件

1 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
2             @Override
3             public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
4                 list.remove(position);
5                 adapter.notifyDataSetChanged();
6                 return true;
7             }
8         });

如果返回值為true的話這個點擊事件會被長點擊獨占,否則相反。


免責聲明!

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



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