android 自定义baseadapter listview,android之ListView和BaseAdapter的组合使用
BaseAdapter是基本適配器,功能強大,凡是能用ArrayAdapter和SimpleAdapter解決的,都可以使用BaseAdapter解決。
BaseAdapter是一個抽象類,所以需要自定義一個類來繼承BaseAdapter。BaseAdapter中所必須重寫的方法的意義:
public int getCount():在此適配器中所代表的數據集中的條目數
public Object getItem(int position):獲取數據集中與指定索引對應的數據項
public long getItemId(int position):取在列表中與指定索引對應的行id
public View getView(int position, View convertView, ViewGroup parent):很重要的一個方法。在ListView上顯示的數據的邏輯就是寫在這個方法里。
BaseAdapterListViewActivity2.java中的內容package?com.zzh.day_listview;
import?java.util.ArrayList;
import?java.util.List;
import?android.app.Activity;
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;
/**實現圖片文字混合顯示
*?@author?Administrator
*
*/
public?class?BaseAdapterListViewActivity2?extends?Activity
{
ListView?lv;
List?list?=?new?ArrayList();
@Override
protected?void?onCreate(Bundle?savedInstanceState)
{
//?TODO?Auto-generated?method?stub
super.onCreate(savedInstanceState);
setContentView(R.layout.base_listview);
//?初始化list集合。
for?(int?i?=?0;?i?
{
list.add("item?--??"?+?i);
}
lv?=?(ListView)?findViewById(R.id.listView1);
lv.setAdapter(new?CustomBaseAdapter());
}
class?CustomBaseAdapter?extends?BaseAdapter
{
@Override
public?int?getCount()//返回的是集合的大小
{
return?list.size();
}
@Override
public?Object?getItem(int?position)//返回的是第一個對象
{
return?list.get(position);
}
@Override
public?long?getItemId(int?position)
{
return?0;
}
@Override
public?View?getView(int?position,?View?convertView,?ViewGroup?parent)
{
ViewHolder?vh?;
//優化
if(convertView?==?null)
{
//因為系統已經默認將R.layout.base_listview_item中的控件添加到了父控件中了,所以寫null.
convertView?=?getLayoutInflater().inflate(R.layout.base_listview_item,?null);
vh?=?new?ViewHolder();
vh.iv?=?(ImageView)?convertView.findViewById(R.id.p_w_picpathView1);
vh.tv?=?(TextView)?convertView.findViewById(R.id.textView1);
convertView.setTag(vh);//將vh存起來,以達到代碼優化的效果。
}else
{
vh?=?(ViewHolder)?convertView.getTag();
}
vh.iv.setImageResource(R.drawable.ic_launcher);
vh.tv.setText(list.get(position));
return?convertView;
}
class?ViewHolder{
TextView?tv;
ImageView?iv;
}
}
}
base_listview.xml中的內容:<?xml ?version="1.0"?encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"?>
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"?>
base_listview_item.xml中的內容:<?xml ?version="1.0"?encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"?>
android:id="@+id/p_w_picpathView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"?/>
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="TextView"?/>
效果圖:
源代碼下載鏈接:
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android 自定义baseadapter listview,android之ListView和BaseAdapter的组合使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 孟母三迁的故事
- 下一篇: android studio ignor