首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

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

2013-09-16 
Android之BaseAdapter从一个函数内部放到外边模仿 参考着ArrayAdapter将BaseAdapter写成了外部类,此次内部

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数量@Overridepublic int getCount() {return mList.size();}//获取某个地址的数值@Overridepublic Object getItem(int position) {return mList.get(position);}//获取指定地址@Overridepublic long getItemId(int position) {return position;}//从过度的view中获取view@Overridepublic 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;@Overrideprotected 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);}@Overridepublic 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;}}
?
Android之BaseAdapter从一个函数内部放到外面
? 1 楼 dingran 2013-09-02   1,请注意,目前你还没用用到过什么内部类,也没有外部类这种说法。

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

对比一下各自的优缺点,一定要用Demo验证说明。有凭据。 2 楼 dingran 2013-09-03   直接回答我的第二个问题吧,想明白了吗? 3 楼 dingran 2013-09-03   看看这篇文章:

好好理解理解:

http://ray-yui.iteye.com/blog/1927647 4 楼 dingran 2013-09-04   看看这篇文章:

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

我希望你也能写出来,这些简单的知识都是要总结才能有收获的。 5 楼 未来程序员 15 小时前   dingran 写道看看这篇文章:

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

我希望你也能写出来,这些简单的知识都是要总结才能有收获的。
数字系统 EDA实践、算法分析与设计专选、数据通信基础、微机原理与接口技术专业基础、操作系统、数据库系统基础、数据结构综合设计、操作系统内核与应用实践



热点排行