`
未来程序员
  • 浏览: 25281 次
社区版块
存档分类
最新评论

Android之BaseAdapter从一个函数内部放到外边

阅读更多

模仿 参考着ArrayAdapter将BaseAdapter写成了外部类,此次内部类转化外部类的唯一难点,是参数的传递,要通过自己写的BaseAdapter的构造函数将MainActivity的参数传递给外部类,通过外部类的返回值传递给插件,具体函数还是那些,但是多了一个构造函数。
package com.example.fouradpater_3;

import java.util.List;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MyAdapter<T> extends BaseAdapter {
	private LayoutInflater mInflater;
	
	private Context mContext;
	
	private int mResource;
	
	private int mDropDownResource;
	
	
	
	private List<T> mList;
    
	private void init(Context context, int resource, List<T> objects) {
        mContext = context;
        mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mResource = mDropDownResource = resource;
        mList = objects;
       
    }
    //重写构造函数,将List与Adapter关联
	public MyAdapter(Context context, int textViewResourceId, List<T> objects) {
		init(context, textViewResourceId, objects);
	}
	//获取list数量
	@Override
	public int getCount() {

		return mList.size();
	}
	//获取某个地址的数值
	@Override
	public Object getItem(int position) {

		return mList.get(position);
	}
	//获取指定地址
	@Override
	public long getItemId(int position) {
		
		return position;
	}
	//从过度的view中获取view
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {

		TextView text;
		ImageView imgview;
		RelativeLayout rLayout;
		 if (convertView == null) {
			 rLayout = (RelativeLayout) mInflater.inflate(R.layout.new_file, parent, false);
			 Log.d("com.example.listadpater_text.MainActivity","pos = "+ position +"new");
	        } else {
	        	rLayout = (RelativeLayout) convertView;
	        	 Log.d("com.example.listadpater_text.MainActivity","pos = "+ position +"old");
	        }
		String item = (String) getItem(position);
		text = (TextView) rLayout.findViewById(R.id.TextView2);
		text.setText(item);
		
		
		
		imgview = (ImageView) rLayout.findViewById(R.id.ImageView1);
		
		imgview.setImageResource(R.drawable.ic_launcher);
		
		
		return rLayout;
	}



}
 
package com.example.fouradpater_3;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.widget.Adapter;
import android.widget.Gallery;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;

public class MainActivity extends Activity {
	
	private String[] mad = {"4","3","2","1"};
	
	private List<String> mList;
	
	private Spinner mSpinner;
	
	private GridView mGridView;
	
	private Gallery mGallery;
	
	private ListView mListView;
	
	private Adapter mAdapter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
	    mList = new ArrayList<String>();
	    
		for(int i = 0; i<mad.length;  i++){
			
			mList.add(mad[i]);
	    
		}
		//利用自己写的外部类传递进去参数
		mAdapter = new MyAdapter<String>(this,R.layout.new_file,mList);
		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);
		
	
		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;
	}


}
 

 
  • 大小: 11.1 KB
分享到:
评论
7 楼 dingran 2013-09-17  
dingran 写道
未来程序员 写道
dingran 写道
看看这篇文章:

http://hw1287789687.iteye.com/blog/1936364

我希望你也能写出来,这些简单的知识都是要总结才能有收获的。

数字系统 EDA实践、算法分析与设计专选、数据通信基础、微机原理与接口技术专业基础、操作系统、数据库系统基础、数据结构综合设计、操作系统内核与应用实践





好了,我看到了,本来以为你会单写一个帖子详细说明下呢,没想到你这么懒



就这些了吗?那么你的重点是参照Linux系统学习操作系统和操作系统内核,要能看懂Linux内核源码。

数据库那个理解基本原理,数据结构那个要深入学习,用c去研究透彻。

算法分析和设计也比较重要,这个将来也是有用处的。
6 楼 dingran 2013-09-17  
未来程序员 写道
dingran 写道
看看这篇文章:

http://hw1287789687.iteye.com/blog/1936364

我希望你也能写出来,这些简单的知识都是要总结才能有收获的。

数字系统 EDA实践、算法分析与设计专选、数据通信基础、微机原理与接口技术专业基础、操作系统、数据库系统基础、数据结构综合设计、操作系统内核与应用实践





好了,我看到了,本来以为你会单写一个帖子详细说明下呢,没想到你这么懒
5 楼 未来程序员 2013-09-15  
dingran 写道
看看这篇文章:

http://hw1287789687.iteye.com/blog/1936364

我希望你也能写出来,这些简单的知识都是要总结才能有收获的。

数字系统 EDA实践、算法分析与设计专选、数据通信基础、微机原理与接口技术专业基础、操作系统、数据库系统基础、数据结构综合设计、操作系统内核与应用实践



4 楼 dingran 2013-09-04  
看看这篇文章:

http://hw1287789687.iteye.com/blog/1936364

我希望你也能写出来,这些简单的知识都是要总结才能有收获的。
3 楼 dingran 2013-09-03  
看看这篇文章:

好好理解理解:

http://ray-yui.iteye.com/blog/1927647
2 楼 dingran 2013-09-03  
直接回答我的第二个问题吧,想明白了吗?
1 楼 dingran 2013-09-02  
1,请注意,目前你还没用用到过什么内部类,也没有外部类这种说法。

2.请试验一个问题,为什么要用构造函数来传递数据的引用,为什么不单独搞一个函数用于此事?

对比一下各自的优缺点,一定要用Demo验证说明。有凭据。

相关推荐

Global site tag (gtag.js) - Google Analytics