BaseAdapter适配器:
activity_main.xml:
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
list_item.xml:
<ImageView
android:id="@+id/iv"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@mipmap/ic_launcher"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="vertical">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hahah"
android:layout_marginTop="20dp"
android:textSize="20dp"/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="xixiix"
android:layout_marginTop="10dp"
android:textSize="20dp"/>
</LinearLayout>
MainActivity:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
1.定义数据
private String[] names = {"张三", "李四", "王五"};
private String[] words = {"我是张三,你好", "我是李四,你好", "我是王五,你好"};
private int[] images = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round};
//定义列表
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
6.创建一个适配器对象
mybaseadapter mybase = new mybaseadapter();
///7.将适配器添加进列表控件
lv.setAdapter(mybase);
}
2.定义一个适配器,让它继承自BaseAdapter,因为BaseAdapter是一个抽象类,不能直接使用
class mybaseadapter extends BaseAdapter {
@Override
public int getCount() {
return names.length;
}
@Override
public Object getItem(int position) {
return names[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
3.将条目布局变成View对象
View view = View.inflate(MainActivity.this, R.layout.list_item, null);
4.找到View对象中的控件
TextView text1 = (TextView) view.findViewById(R.id.text1);
TextView text2 = (TextView) view.findViewById(R.id.text2);
ImageView iv = (ImageView) view.findViewById(R.id.iv);
5.给每个控件赋值
text1.setText(names[position]);
text2.setText(words[position]);
iv.setBackgroundResource(images[position]);
return view;
}
}
}
SimpleAdapter适配器:
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends Activity {
private List<Map<String, Object>> lists;
private ListView listView;
//1.定义数据
private String[] theme = {"张三", "李四", "王五"};
private String[] content = {"我是张三,你好", "我是李四,你好", "我是王五,你好"};
private int[] imageViews = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round};
private SimpleAdapter sa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//定义列表
listView = (ListView) findViewById(R.id.lv);
//2.准备数据源:List<Map<String, Object>>类型的,SimpleAdapter适配器参数的第2项
lists = new ArrayList<>();
//3.向数据源中添加数据
for (int i = 0; i < theme.length; i++) {
//创建HashMap<>对象
Map<String, Object> map = new HashMap<>();
//向map中添加数据
map.put("image", imageViews[i]);
map.put("theme", theme[i]);
map.put("content", content[i]);
//将map添加进数据源中
lists.add(map);
}
//4.创建SimpleAdapter对象,向里面传参
//参数1.上下文对象 2.数据源 3.条目布局的id 4.map中的key值(从哪里来) 5.item条目中的控件(到哪里去)
// 参数 4 和 5 要对应
sa = new SimpleAdapter(MainActivity.this, lists, R.layout.list_item
, new String[]{"image", "theme", "content"}
, new int[]{R.id.iv, R.id.text1, R.id.text2});
listView.setAdapter(sa);
}
}
RecyclerView控件:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
1.定义数据
private String[] names = {"张三", "李四", "王五"};
private String[] words = {"我是张三,你好", "我是李四,你好", "我是王五,你好"};
private int[] images = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round};
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2.实例化RecyclerView控件
recyclerView = (RecyclerView) findViewById(R.id.rv);
//3.定义管理器,设置排列方向,并给recyclerView添加管理器
LinearLayoutManager LayoutManager = new LinearLayoutManager(this);
LayoutManager.setOrientation(LayoutManager.VERTICAL);
recyclerView.setLayoutManager(LayoutManager);
HomeAadpter homeAadpter = new HomeAadpter();
recyclerView.setAdapter(homeAadpter);
}
//4.创建类继承RecyclerView.Adapter,并定义一个泛型,实现3个方法,创建MyViewHolder类
class HomeAadpter extends RecyclerView.Adapter<HomeAadpter.MyViewHolder> {
//6.将布局文件变成View对象,传给MyViewHolder类
// 创建MyViewHolder的对象(holder),并返回
//holder里面包含MyViewHolder类中定义的控件
@Override
public HomeAadpter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
MyViewHolder holder = new MyViewHolder(View.inflate(MainActivity.this, R.layout.list_item, null));
return holder;
}
//7.将数据设置到对应的控件上
@Override
public void onBindViewHolder(HomeAadpter.MyViewHolder holder, int position) {
holder.text1.setText(names[position]);
holder.text2.setText(words[position]);
holder.iv.setImageResource(images[position]);
}
//8.返回条目数
@Override
public int getItemCount() {
return names.length;
}
//5.创建MyViewHolder类,继承RecyclerView.ViewHolder,重写构造方法
//在该类中获取条目布局中的控件
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView text1, text2;
ImageView iv;
//重写构造方法
public MyViewHolder(View itemView) {
super(itemView);
text1 = (TextView) itemView.findViewById(R.id.text1);
text2 = (TextView) itemView.findViewById(R.id.text2);
iv = (ImageView) itemView.findViewById(R.id.iv);
}
}
}
}
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
1.定义数据
private String[] names = {"桌子", "椅子", "板凳","桌子", "椅子", "板凳","桌子", "椅子", "板凳","桌子", "椅子", "板凳"};
private String[] words = {"10000", "22223", "23333333","10000", "22223", "23333333","10000", "22223", "23333333","10000", "22223", "23333333"};
private int[] images = {R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round,R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round,R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round,R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round};
//定义列表
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化列表
lv = (ListView) findViewById(R.id.lv);
mybaseadapter mybase = new mybaseadapter();
lv.setAdapter(mybase);
}
//2.创建ViewHolder类,把item条目中的控件声明在这个类里
class ViewHolder{
TextView text1,text2;
ImageView iv;
}
3.定义一个适配器,让它继承自BaseAdapter,因为BaseAdapter是一个抽象类,不能直接使用
class mybaseadapter extends BaseAdapter {
@Override
public int getCount() {
return names.length;
}
@Override
public Object getItem(int position) {
return names[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//4.当getView方法执行的时候,就把这个ViewHolder定义出来
ViewHolder viewHolder;
//5.当convertView等于空时,创建一个当convertView
if(convertView == null){
//将item布局转换为一个View对象
convertView = View.inflate(MainActivity.this, R.layout.list_item, null);
//当convertView等于空时,new一个ViewHolder实例
viewHolder = new ViewHolder();
//因为holder里面定义了一些变量,给它们赋值
viewHolder.text1= (TextView) convertView.findViewById(R.id.text1);
viewHolder.text2= (TextView) convertView.findViewById(R.id.text2);
viewHolder.iv= (ImageView) convertView.findViewById(R.id.iv);
//setTag方法给convertView加标签
convertView.setTag(viewHolder);
}else{
//6.当convertView存在时,获取ViewHolder类的对象(类的对象里面有变量)
viewHolder = (ViewHolder) convertView.getTag();
}
//7.设置数据
viewHolder.text1.setText(names[position]);
viewHolder.text2.setText(words[position]);
viewHolder.iv.setBackgroundResource(images[position]);
return convertView;
}
}
}