模仿 参考着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
分享到:
相关推荐
- 创建适配器:自定义一个继承自BaseAdapter的类,用于将Java对象绑定到ListView的各个Item。 - 设置ListView:将适配器设置到ListView上,通过调用`listView.setAdapter(adapter)`完成数据绑定。 2. 示例代码: ...
RadioButton是Android中的一个选择控件,属于RadioGroup的一部分。在一个RadioGroup中,用户只能选择一个RadioButton,这使得它适合用于实现单选功能。RadioButton的基本使用包括设置文字、监听事件等: ```xml ...
综上所述,"Android九宫格锁屏案例"涉及到Android界面设计、自定义Adapter、事件监听以及动画效果的实现等多个方面,是学习Android开发过程中一个很好的实践项目。通过这个案例,开发者不仅可以掌握基础的Android...
同时,为GridView设置适配器,通常是一个自定义的`BaseAdapter`,在这个适配器中,你可以绑定图标和文字到每个单元格。 ```xml android:id="@+id/grid_view" android:layout_width="match_parent" android:...
BaseAdapter是Adapter的一个基类,可以将数据集合(如ArrayList)映射到GridView上。你需要在Adapter中实现以下方法: - `getCount()`:返回数据集合的大小,决定GridView的行数。 - `getItem(int position)`:...
创建一个自定义的Adapter,继承自BaseAdapter或RecyclerView.Adapter,然后在`getView()`方法中创建并配置气泡View,将短信内容放入其中。 3. 动画与交互: - 为了让气泡动画效果更逼真,可以添加进入、退出动画,...
你需要创建一个适配器(如`BaseAdapter`或`CursorAdapter`),将查询到的视频信息绑定到`GridView`的每个单元格上。每个单元格通常包含视频缩略图和标题。 ```java public class VideoAdapter extends BaseAdapter ...
可以使用AsyncTask或其他异步加载方式,将数据加载工作放到后台线程,加载完成后更新ListView。 最后,不要忘记在Activity或Fragment中设置Adapter并启动数据加载: ```java ContactAdapter adapter = new ...
在Android开发中,ListView是一个非常常见的组件,常用于展示列表形式的数据。这篇学习笔记主要讲述了如何将HashMap中的数据填充到ListView的ListAdapter中,以实现一个简单的列表显示。 首先,我们需要理解...
在Android开发中,自定义`PopupWindow`是一个常见的需求,它允许开发者创建具有高度定制性的弹出窗口。在这个场景中,我们看到一个`PopupWindow`不仅包含了一个`ViewPager`,还包含了一个`GridView`,这样的设计可以...
在`MyBaseAdapter`中,我们可以利用Kotlin的扩展函数和高阶函数进一步封装和简化代码,如提供一个通用的`bindData()`函数,接受一个数据对象和一个ViewHolder,然后填充数据。 10. **异步加载数据** 如果数据是从...
VideoView是Android SDK中的一个视图类,它允许我们直接在布局中嵌入视频播放功能。VideoView可以加载本地视频文件或者通过MediaController播放网络流媒体。 要实现在ListView中播放视频,我们首先需要创建一个...
具体的实现代码中,需要创建一个继承自BaseAdapter的适配器类,这个类需要实现几个重要的方法,例如getCount()返回数据源的总数,getItem()返回对应位置的数据,getItemId()返回对应位置数据的id,以及getView()返回...
`ImageAdapter`的构造函数接收一个`Context`参数,用于初始化`myContext`。`getCount()`方法返回图片的数量,这里是六张。`getItem()`方法在这里并不重要,因为`Gallery`通常不关心每个项目的具体数据。`getView()`...
- **创建对象数量**:在编译阶段,“abc”会在常量池中创建一次,在运行时会创建一个新的字符串对象。 #### 36. String、StringBuffer、StringBuilder的区别 - **String**:不可变字符串。 - **StringBuffer**:...
本项目是一个基于Java语言开发的简单音乐播放器,主要针对初学者和希望了解音乐播放器基本实现原理的开发者。它实现了基础的音乐播放功能,如扫描SD卡上的音乐文件、在ListView中展示音乐列表、播放控制以及后台服务...
`Gallery`控件在Android开发中是一个非常有用的工具,它允许用户在水平方向上滚动查看一系列项目,常用于图片浏览或选项展示。在创建向导式表单时,我们可以利用这一点,将长表单分解为多个步骤,每个步骤对应`...
- 在这个Demo中,你需要创建一个自定义的ListViewAdapter,继承自BaseAdapter或ArrayAdapter。 - 自定义Adapter需要重写以下方法:`getCount()`(返回列表项总数)、`getItem(int position)`(获取指定位置的项)...
首先,为了在Android应用中处理GIF图像,我们需要一个库来解析和显示这些动态图片。Android原生SDK并不直接支持GIF格式,所以我们通常会使用第三方库,如 Glide、Picasso 或 Android-Universal-Image-Loader。这里...
如果需要递归遍历子目录,我们可以写一个递归函数,对每个子目录重复上述过程。 接着,我们需要自定义一个Adapter来绑定数据到ListView。Adapter是连接数据源和视图的桥梁,这里我们可以创建一个继承自BaseAdapter...