(1)Adapter适配器(ArrayAdapter、SimpleAdapter、BaseAdapter)
生活随笔
收集整理的這篇文章主要介紹了
(1)Adapter适配器(ArrayAdapter、SimpleAdapter、BaseAdapter)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
ArrayAdapter(數(shù)組適配器)
ArrayAdapter只能顯示一行文本數(shù)據(jù)
ArrayAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull T[] objects) {this(context, resource, 0, Arrays.asList(objects)) 參數(shù)說明:
context上下文對象每一個item的樣式,(可使用系統(tǒng)提供,也可自定義) 系統(tǒng)提供的樣式如下 - simple_list_item1:單獨的一行文本框 - simple_list_item2:兩個文本框 - simple_list_item_checked:每項是一個已選中的列表項 - simple_list_multiple_choice:復選框 - simple_list_item_single_choice:單選框數(shù)據(jù)源
Adapter的使用:
第一種方式
1.初始化適配器
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_expandable_list_item1,datas); 2.綁定適配器 listView.setAdapter(adapter); - 第二種方式
在res\value下創(chuàng)建數(shù)組資源的xml文件:arrays.xml
獲取xml中String數(shù)組
String name[] = getResources().getStringArray(R.array.myArray); SimpterAdapter【簡單適配器】
new SimpleAdapter(MainActivity.this,lists,R.layout.list_item
,new String[]{"image","theme","content"}
,new int[]{R.id.image1,R.id.text1,R.id.text2});
- 參數(shù)說明
- 1.上下文對象
- 2.數(shù)據(jù)源,常是一個含Map的集合
- 3.item的布局文件
- 4.new String[]{}數(shù)組,與第2個參數(shù)中存入的map集合里的key值一一對應
- new int[],第三個參數(shù)中的item里面的控件id
- 基本案例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ListViewandroid:id="@+id/ll1"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView>
</LinearLayout> item樣式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/image1"android:layout_width="100dp"android:layout_height="100dp"android:src="@mipmap/ic_launcher"android:layout_margin="5dp"/><LinearLayoutandroid:id="@+id/ll2"android:layout_width="match_parent"android:layout_height="100dp"android:orientation="vertical"android:layout_marginTop="5dp"android:layout_marginLeft="10dp"><TextViewandroid:id="@+id/text1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="哈哈"android:textSize="30sp"android:layout_marginTop="10dp"/><TextViewandroid:id="@+id/text2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="哈哈哈哈哈"android:textSize="24dp"android:layout_marginTop="10dp"/></LinearLayout>
</LinearLayout> Java文件
package com.example.test3;import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class MainActivity extends Activity{
// 這三個經(jīng)常是同時出現(xiàn)的private List<Map<String,Object>> lists;private SimpleAdapter adapter;private ListView listView;
// 定義數(shù)據(jù)private String[] theme = {"張三","李四","王五"};private String[] content ={"我是張三,你好","我是李四,你好","我是王五,你好"};private int[] imageViews = {R.mipmap.ic_launcher,R.mipmap.ic_account,R.mipmap.ic_password};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) findViewById(R.id.ll1);
// 準備數(shù)據(jù)源lists = new ArrayList<>();for(int i = 0;i < theme.length;i++){Map<String,Object> map =new HashMap<>();map.put("image",imageViews[i]);map.put("theme",theme[i]);map.put("content",content[i]);lists.add(map);}adapter = new SimpleAdapter(MainActivity.this,lists,R.layout.list_item,new String[]{"image","theme","content"},new int[]{R.id.image1,R.id.text1,R.id.text2});listView.setAdapter(adapter);}
} 效果圖
BaseAdapter
自定義adapter
package com.example.test3;import android.content.Context;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;import java.util.ArrayList;
import java.util.List;/*** Created by coder-tu on 2016/1/13.*/
public class MyAdapter extends BaseAdapter {private List<Message> Datas;private Context mContext;public MyAdapter(List<Message> datas, Context mContext) {Datas = datas;this.mContext = mContext;}/*** 返回item的個數(shù)* @return*/@Overridepublic int getCount() {return Datas.size();}/*** 返回每一個item對象* @param i* @return*/@Overridepublic Object getItem(int i) {return Datas.get(i);}/*** 返回每一個item的id* @param i* @return*/@Overridepublic long getItemId(int i) {return i;}/*** 暫時不做優(yōu)化處理,后面會專門整理BaseAdapter的優(yōu)化* @param i* @param view* @param viewGroup* @return*/@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {view = LayoutInflater.from(mContext).inflate(R.layout.list_item,viewGroup,false);ImageView imageView = (ImageView) view.findViewById(R.id.image1);TextView textView1 = (TextView) view.findViewById(R.id.text1);TextView textView2 = (TextView) view.findViewById(R.id.text2);imageView.setImageResource(Datas.get(i).getImageId());textView1.setText(Datas.get(i).getTheme());textView2.setText(Datas.get(i).getContent());
// 此處需要返回view 不能是view中某一個return view;}
} Java文件
package com.example.test3;import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;import java.util.ArrayList;
import java.util.List;public class MainActivity extends Activity{
// 這三個經(jīng)常是同時出現(xiàn)的private List<Message> lists;private MyAdapter adapter;private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) findViewById(R.id.ll1);lists = new ArrayList<>();lists.add(new Message(R.mipmap.ic_launcher,"張三","你好,我是張三"));lists.add(new Message(R.mipmap.ic_account,"李四","你好,我是李四"));lists.add(new Message(R.mipmap.ic_password,"王五","你好,我是王五"));adapter = new MyAdapter(lists,MainActivity.this);listView.setAdapter(adapter);}
} - BaseAdapter的優(yōu)化
轉載于:https://www.cnblogs.com/lyszyl/p/10649683.html
總結
以上是生活随笔為你收集整理的(1)Adapter适配器(ArrayAdapter、SimpleAdapter、BaseAdapter)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wordpress主题
- 下一篇: 主机/服务器某端口被占用及解决办法