SimpleAdapter和BaseAdapter同属于Adapter的子类
BaseAdapter简介
BaseAdapter是实现了ListAdapter和SpinnerAdapter两个接口,当然它也可以直接给ListView和Spinner等UI组件直接提供数据。
相关类结构如下图所示:
示例:
实现listview并且定位item中的view,当点击时,出现作者名字
直接在MainActivity中写
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list1 = (ListView)findViewById(R.id.listview1);
final String[] booknames = new String[]{"月童度河","我喜欢生命本来的样子","重温最美古诗词(再版)"};
final String[] bookinfos = new String[]{"这是一种如实和行进的写作,如同灌注之前," +
"把容器清洁。只愿在时间中慢慢成为单纯的人。随书附赠精美书签。"
,"影响和改变万千年轻人对人生的思考和生活的态度!裸书脊精装,四色印刷," +
"著名自由摄影师林帝浣插图,但愿你保持住一份生命的本色!"
,"继《〈论语〉心得》后又一经典作品,于丹17年古诗词积淀,首度爆发!2016纪念再版重磅推出! "};
final String[] bookzuozhe = new String[]{"安妮宝贝","周国平","于丹"};
final int[] bookimages = new int[]{R.drawable.img1,R.drawable.img2,R.drawable.img3};
BaseAdapter adapter1 = new BaseAdapter() {
private int count =3;
@Override
public int getCount() {
return count;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setOrientation(LinearLayout.HORIZONTAL);
ImageView image = new ImageView(getApplicationContext());
image.setImageResource(bookimages[i]);
layout.addView(image);
LinearLayout layout1 = new LinearLayout(getApplicationContext());
layout1.setOrientation(LinearLayout.VERTICAL);
TextView text = new TextView(getApplicationContext());
text.setText(booknames[i]);
text.setTextColor(getResources().getColor(R.color.colorPrimary));
layout1.addView(text);
TextView text1 = new TextView(getApplicationContext());
text1.setText(bookinfos[i]);
layout1.addView(text1);
text1.setTextColor(getResources().getColor(R.color.colorPrimary));
TextView text2 = new TextView(getApplicationContext());
text2.setId(R.id.zuozhe);
text2.setTextColor(getResources().getColor(R.color.colorAccent));
layout1.addView(text2);
layout.addView(layout1);
return layout;
}
};
list1.setAdapter(adapter1);
list1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView zuozhe = (TextView)view.findViewById(R.id.zuozhe);
zuozhe.setText(bookzuozhe[i]);
}
});
}
}
需要注意一点,在这里直接获取作者的TextView是获取不到的,需要给其增加一个ID
此时就需要对视图使用方法setID(ID):
text2.setId(R.id.zuozhe);
并且需要新建一个资源文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="zuozhe" type="id"></item>
</resource
如此才能通过getId方法定位