您的位置:首页 > 移动开发 > Android开发

Android之BaseAdapter

2014-11-20 12:05 302 查看
BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter;BaseAdapter作为可定制界面的桥梁,非常灵活。下面我们就以listview显示图片和文字举例进行说明:

1、新建一个布局文件:添加一个Listview:activity_main作为主activity的布局文件

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>


2、定制界面所需要的显示样式:listview_celldata

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/ico"
android:layout_width="120dp"
android:layout_height="120dp" />
<LinearLayout
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tvname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
android:id="@+id/tvdec"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>

</LinearLayout>


3、新建一个class 继承子BaseAdapter,重写他的方法:

public class BaseAdapter extends android.widget.BaseAdapter {
private  Context context=null;
public BaseAdapter(Context context)
{
this.context=context;
}

public Context getContext() {
return context;
}

private  getData[] data=new getData[]{
new getData("liye","liye",R.drawable.a),
new getData("wang","wang",R.drawable.b),
new getData("zhang","zhang",R.drawable.c)
};

@Override
public int getCount() {
return data.length;
}

@Override
public getData getItem(int position) {
return data[position];
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

LinearLayout ll=null;
if (convertView!=null)
{
ll=(LinearLayout)convertView;
}
else
{
ll= (LinearLayout) LayoutInflater.from(getContext()).inflate(R.layout.listview_celldata,null);
}
getData data= getItem(position);
ImageView icon=(ImageView)ll.findViewById(R.id.ico);
TextView name=(TextView)ll.findViewById(R.id.tvname);
TextView dec=(TextView)ll.findViewById(R.id.tvdec);
icon.setImageResource(data.icoId);
name.setText(data.name);
dec.setText(data.dec);

return ll;
}
}


4、在主activity中调用重写的BaseAdapter

public class MainActivity extends Activity {
private ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.listview);
lv.setAdapter(new com.listview.litongjie.usinglistview.BaseAdapter(this));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: