前言
本篇衔接ListView入门
点此跳转到安卓的ListView入门
提示:以下是本篇文章正文内容,下面案例可供参考
一、适配器说明
listview的适配器继承BaseAdapter,其中,最关键的点在于,每个item子项的设置。
二、代码解析
1.代码
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
// 判断子项视图有没有传进去,没传进去就传进去
convertView = layoutInflater.inflate(R.layout.listview_item_test, null);
convertView.setTag(new ViewHolder(convertView));
}
initializeViews(position, (ViewHolder) convertView.getTag());
// 初始化了子项视图
return convertView;
}
private void initializeViews(int object, ViewHolder holder) {
//TODO implement
// 下面设置子项视图的各种数据
holder.listviewItem.setText(objects.get(object)); //这里设置了子项中的文本框的文本内容
}
protected class ViewHolder {
private TextView listviewItem;
public ViewHolder(View view) {
// 这个地方获取到了子项视图中的控件对象
listviewItem = (TextView) view.findViewById(R.id.listview_item);
}
}
关键方法(示例):initializeViews(),修改方法内容,并重构构造方法:
public interface itemOnClick{
void itemOnClick(String string);
}
private itemOnClick itemOnClick;
private void initializeViews(final int object, ViewHolder holder) {
//TODO implement
// 下面设置子项视图的各种数据
holder.listviewItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (itemOnClick!=null){
itemOnClick.itemOnClick(objects.get(object));
}
}
});
holder.listviewItem.setText(objects.get(object)); //这里设置了子项中的文本框的文本内容
}
public ListviewItemTestAdapter(List<String> objects, Context context, ListviewItemTestAdapter.itemOnClick itemOnClick) {
this.objects = objects;
this.context = context;
this.itemOnClick = itemOnClick;
//构造方法
}
上方增加了一个itemOnClick接口,并设置接口的成员变量。
在初始化视图的方法中设置了一个监听,当被单击则调用接口的方法。
接口会在适配器被创建出来的时候重构。
2.创建出接口对象
代码如下(示例):
listviewItemTestAdapter = new ListviewItemTestAdapter(strings, ListViewTest.this, new ListviewItemTestAdapter.itemOnClick() {
@Override
public void itemOnClick(String string) {
//这个String ,是之前在适配器中所调用的 刚才的适配器中是这么一句。itemOnClick.itemOnClick(objects.get(object));,也就是调用了
// ,objects.get(object)
Toast.makeText(ListViewTest.this, "你点击了:"+string, Toast.LENGTH_SHORT).show();
}
});
//创建了一个新的适配器后因构造方法会要求你重写接口。
listview.setAdapter(listviewItemTestAdapter);
当创建出了一个新的适配器对象不要忘了把适配器对象在ListView控件中设置。
listview.setAdapter()
总结
提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了ListView子项的设置。
关键,需要监听的时候,如果外部拿不到一些内部的数据,可以设置接口然后在外部重写出来让其获取数据。