MainActivity中
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView listView;
private String[] data;
private List<DataList> lsobj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data =getData();
lsobj=getDataList();
listView = findViewById(R.id.listview);
//使用方法
AdpterFrame af = new AdpterFrame<DataList,Items>(this, lsobj, new AdpterCallBack() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
Items items=null;
if(convertView == null){
view = View.inflate(MainActivity.this, R.layout.listviewitem, null);
items=new Items();
items.txt_nickname = view.findViewById(R.id.item);
view.setTag(items);
}else{
view = convertView;
items= (Items) view.getTag();
}
items.txt_nickname.setText(lsobj.get(position).name);
return view;
}
@Override
public View getViewFrame(int position, View convertView, ViewGroup parent, Object o) {
return null;
}
@Override
public Void initItemView(Object o) {
return null;
}
});
//listView.setAdapter(new Myadpter(this,data));
listView.setAdapter(af);
}
private String[] getData() {
return new String[] { "张三", "李四", "王五", "陆六" };
}
List<DataList> getDataList(){
List<DataList> ls = new ArrayList<DataList>();
DataList dataList = new DataList("测试1");
ls.add(dataList);
dataList = new DataList("测试2");
ls.add(dataList);
dataList = new DataList("测试3");
ls.add(dataList);
dataList = new DataList("测试4");
ls.add(dataList);
return ls;
}
class Items{
public ImageView iv_avatar;
public TextView txt_nickname;
public TextView txt_description;
}
class DataList {
String name;
DataList(String str){
this.name = str;
}
}
}
AdpterFrame代码
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.util.List;
public class AdpterFrame<T,V> extends BaseAdapter {
private Context mContext;
private String[] data = null;//数组数据 使用泛型 定义
private List<T> mData = null;//传递进来的集合数据
AdpterCallBack adpterCallBack;//getView 回调函数
public AdpterFrame(Context context,String[] strings,AdpterCallBack adpterCallBack){
this.mContext = context;
this.data = strings;
this.adpterCallBack = adpterCallBack;
}
public AdpterFrame(Context context,List list,AdpterCallBack adpterCallBack){
this.mContext = context;
this.mData = list;
this.adpterCallBack = adpterCallBack;
}
@Override//传递进来的是数组 就返回数组/list就返回list
public int getCount() {
if(data!=null){
return data.length;
}else{
return mData.size();
}
}
@Override
public Object getItem(int position) {
if(data!=null){
return data[position];
}else{
return mData.get(position);
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view =this.adpterCallBack.getView(position,convertView,parent);
return view;
}
}
interface AdpterCallBack<S>{
View getView(int position, View convertView, ViewGroup parent);//相当去Adapter中的getView,所有的操作自己写
View getViewFrame(int position, View convertView, ViewGroup parent,S s);//这种是 调用默认模式
Void initItemView(S s);//初始化ItemView
}