欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Android Adapter之BaseAdapter

系統 1911 0



?1.概念

Adapter英文意思 適配器

?

Adapter是連接后端數據和前端顯示的適配器接口,是數據和UI(View)之間一個重要的紐帶。在常見的View(ListView,GridView)等地方都需要用到Adapter。如下圖直觀的表達了Data、Adapter、View三者的關系:


Android Adapter之BaseAdapter
?(盜圖可恥,但是很直觀)


Android Adapter之BaseAdapter
?

我們可以看到在Android中與Adapter有關的所有接口、類的完整層級圖。在我們使用過程中可以根據自己的需求實現接口或者繼承類進行一定的擴展。比較常用的有 BaseAdapter,ArrayAdapter,SimpleCursorAdapter等。

  • BaseAdapter 是一個抽象類,繼承它需要實現較多的方法,所以也就具有較高的靈活性;
  • ArrayAdapter 支持泛型操作,通常需要實現getView方法,特殊情況下(結合數據row id),為了讓ui事件相應處理方便點最好重寫getItemId;
  • SimpleCursorAdapter 可以適用于簡單的純文字型ListView,它需要Cursor的字段和UI的id對應起來。如需要實現更復雜的UI也可以重寫其他方法。

?

?

BaseAdapter的所有接口:


Android Adapter之BaseAdapter
最常用的有 getView() ,它是將獲取數據后的View組件返回,如ListView中每一行里的TextView、Gallery中的每個ImageView。

getItemId() ,返回數據的id

getItem() ,將獲取數據的某個位置的數據返回 如array[0],array[1].....

getCount() 將獲取數據的個數返回

?

BaseAdapter 是一個 抽象類 如果使用我們必須自己去實現

下邊引用一個例子:


Android Adapter之BaseAdapter
?我用了4個插件Spinner,ListView ,Gallery,GridView

?

?

      package com.example.fouradpater_2;

import android.os.Bundle;
import android.provider.MediaStore.Images;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;

public class MainActivity extends Activity {
	//作為一個adapter用于轉換的“過渡”view
	private LayoutInflater mInflater;
	//定義一個數組用來存放數據
	private static final String[] mad = {"4","3","2","1"};
	//定義四個插件
	private Spinner mSpinner;
	
	private GridView mGridView;
	
	private Gallery mGallery;
	
	private ListView mListView;
	//定義一個adapter
	private Adapter mAdapter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//		mInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//		mInflater = (LayoutInflater)MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		
		//關聯四個組件
		mSpinner = (Spinner) findViewById(R.id.spinner1);
		mGridView = (GridView) findViewById(R.id.gridView1);
		mGallery = (Gallery) findViewById(R.id.gallery1);
		mListView = (ListView) findViewById(R.id.listView1);
		//new一個 Adapter 的 BaseAdapter
		mAdapter = new BaseAdapter() {
			
			@Override
			//最常用的有getView(),它是將獲取數據后的View組件返回,
			//如ListView中每一行里的TextView、Gallery中的每個ImageView。
			public View getView(int position, View convertView, ViewGroup parent) {
				// TODO Auto-generated method stu

				TextView text;
				ImageView imgview;
				RelativeLayout rLayout;
				 if (convertView == null) {
					 rLayout = (RelativeLayout) mInflater.inflate(R.layout.new_file, parent, false);
//					 view = new TextView(MainActivity.this);
			        } else {
			        	rLayout = (RelativeLayout) convertView;
			        }
				String item = (String) getItem(position);
//				rLayout.setTag(item.toString());
				text = (TextView) rLayout.findViewById(R.id.TextView2);
//				text.setText(item.toString());   畫蛇添足
				text.setText(item);
				
				imgview = (ImageView) rLayout.findViewById(R.id.ImageView1);
//				imgview.setId(R.drawable.ic_launcher);// 用錯函數
				
				imgview.setImageResource(R.drawable.ic_launcher);
				
				
				return rLayout;
			}
			
			@Override
			//getItemId(),返回數據的id
			public long getItemId(int position) {
				return position;
			}
			
			@Override
			//getItem(),將獲取數據的某個位置的數據返回 如array[0],array[1].....
			public Object getItem(int position) {
				return  mad[mad.length-1-position];
			}
			
			@Override
			//getCount()將獲取數據的個數返回
			public int getCount() {
				
				return mad.length;
			}
		};

	
		mSpinner.setAdapter((SpinnerAdapter) mAdapter);
		mGridView.setAdapter((ListAdapter) mAdapter);
		mGallery.setAdapter((SpinnerAdapter) mAdapter);
		mListView.setAdapter((ListAdapter) mAdapter);
	}
		
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

    

?

記錄下自己的錯誤,順便做下記錄和介紹

使用BaseAdapter ,必須將最基礎的4個函數完善

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <ImageView
        android:id="@+id/ImageView1"
        android:layout_width="20dp"
        android:layout_height="20dp"
        
        />
    <TextView 
        android:id="@+id/TextView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/ImageView1"
        
        />
</RelativeLayout>
    

?這是BaseAdapter需要用到的xml,算是一個“過渡”的xml,用來給getView傳遞View

?

?

所以BaseAdapter比較萬能,可以將各種儲存結構通過Adapter 傳遞給需要的View

Android Adapter之BaseAdapter


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区三区四区国产 | 亚洲欧美日韩中文字幕在线不卡 | 亚洲国产一区在线 | 国产真人做爰视频免费 | 久久精品国产亚洲一区二区 | 欧美久久网 | 特级做a爰片毛片免费看 | 日本熟妇毛茸茸xxxxx | 日本中文字幕在线播放 | 久久久久av | 91欧美精品激情在线观看 | 日韩免费毛片 | 欧美—级v免费大片 | 久久久久久国产精品免费免费 | 午夜小视频网站 | 国产视频资源在线观看 | 欧美精品成人一区二区三区四区 | 91精品国产综合久久久久久 | a毛片在线看免费观看 | 无名者电影在线完整版免费 | 国产日本欧美在线观看 | 日韩中文一区 | 在线观看视频一区 | 久久中文字幕网 | 一区免费看| 一个看片免费视频www | 男女国产视频 | 日本在线免费 | 国产片翁熄系列乱在线视频 | 亚洲天天看| 一级片成人 | 亚洲午夜无码毛片AV久久 | 精产国产伦理一二三区 | 成人午夜精品一区二区三区 | 欧美91精品国产自产 | 日韩欧美一区二区在线观看 | 国产成人激情视频 | 国产人妻人伦精品潘金莲 | 色免费视频 | 国产成人综合一区二区三区 | 欧美精品导航 |