模仿 参考着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
分享到:
相关推荐
ListView与BaseAdapter的配套使用 理解android 中adapter适配的作用 以及ListView的优化方式
android demo,baseAdapter的应用,
android中自定义适配器BaseAdapter
一个简单baseAdapter的封装demo.减少一些不必须要的重复的代码。
Android-扩展BaseAdapter实现progressBar下载 * 该Demo涉及了BaseAdapter,ProgressBar,Handler,Thread,线程池; * * Android-扩展BaseAdapter实现progressBar下载 * 1.创建listview的xml * 2.创建listview中...
详细介绍android开发的BaseAdapter使用方法,提供各种代码例子!
此文件为Eclipse下的android工程,里面介绍了listView的三种适配方式,从实现到优化。
android demo,BaseAdapter传递context的应用,
baseadapter
Android自定义BaseAdapter,大大的节省代码量
Android中ListView,SQLite,BaseAdapter的结合[参照].pdf
主要介绍了Android中BaseAdapter用法,分析了BaseAdapter的功能、使用方法与相关注意事项,需要的朋友可以参考下
Android必学-BaseAdapter的使用与优化,写出高效、文艺的BaseAdapter, android studio环境
BaseAdapter 是一个我写的adapter的基类,感觉还是比较用,希望大家多提意见
BaseAdapter整合ListView使用的例子
BaseAdapter的一个Demo
主要是测试baseAdapter的getView在生成实例时的空判断进行接卸
android BaseAdapter AsyncTask 异步加载
主要介绍了Android中BaseAdapter的用法分析与理解,结合一个项目开发中BaseAdapter的使用分析了BaseAdapter的功能、作用及用法理解,需要的朋友可以参考下