您的位置:首页 > 其它

ArrayAdapter,SimpleAdapter,BaseAdapter

2016-02-23 13:24 369 查看
自从放寒假,以及过年期间,一直没有好好的敲代码,也没有好好的看书,导致现在已经对原来学的东西忘记的太严重了,深深地感觉到脑子不够用了,决定重温下原来的基础。
先总结下几个简单的适配器,ArrayAdapter,SimpleAdapter,BaseAdapter的用法。

1 ArrayAdapter
数组适配器,这是最简单的适配器,基本上是用于只显示文本。


public class ArrayListDemo extends Activity {
private ListView listView;
private List<String> datas;
private ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_arraylist);
listView = (ListView) findViewById(R.id.listview);
getDatas();
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, datas);
listView.setAdapter(adapter);
}

public List<String> getDatas() {
datas = new ArrayList<>();
for (int i = 0; i < 20; i++) {
datas.add("item" + i);
}
return datas;
}
}




2 SimpleAdapter虽然说这个叫做SimpleAdapter, 但是却不是很简单的,可以比ArrayAdapter有更广泛的作用,可用于显示图片与文本组合的较复杂的列表。

public class MainActivity extends AppCompatActivity {
private ListView listView;
private SimpleAdapter adapter;
private List<Map<String, Object>> data;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listview);
data = new ArrayList<>();
for (int i = 0; i < 20; i++) {
Map<String, Object> map = new HashMap<>();
map.put("pic", R.mipmap.ic_launcher);
map.put("string", "数据"+i);
data.add(map);
}
adapter = new SimpleAdapter(this, data, R.layout.simple_item, new String[]{"pic", "string"}, new int[]{R.id.image, R.id.text});
listView.setAdapter(adapter);
}
}




3 BaseAdapter 这个相对来说。就有更加广泛的用途了,能用于更加复杂的列表。


public class TestBaseAdapter extends Activity {
private ListView listView;
private MyBaseAdapter adapter;
private List<ItemBean> beans;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_baseadapter);
listView = (ListView) findViewById(R.id.listview);
getData();
adapter = new MyBaseAdapter(this, beans);
listView.setAdapter(adapter);
}

private void getData() {
beans = new ArrayList<>();
for (int i = 0; i < 20; i++) {
beans.add(new ItemBean(R.mipmap.ic_launcher, "title" + i, "content" + i));
}
}
}


ItemBean 存储列表项的数据Bean

public class ItemBean {
private int imageResIdId;
private String mTitle;
private String mContext;

public ItemBean(int imageResIdId, String mTitle, String mContext) {
this.imageResIdId = imageResIdId;
this.mTitle = mTitle;
this.mContext = mContext;
}

public int getImageResIdId() {
return imageResIdId;
}

public void setImageResIdId(int imageResIdId) {
this.imageResIdId = imageResIdId;
}

public String getmTitle() {
return mTitle;
}

public void setmTitle(String mTitle) {
this.mTitle = mTitle;
}

public String getmContext() {
return mContext;
}

public void setmContext(String mContext) {
this.mContext = mContext;
}
}


Base适配器

public class MyBaseAdapter extends BaseAdapter {
private List<ItemBean> data;
private LayoutInflater inflater;

public MyBaseAdapter(Context context, List<ItemBean> mdata) {
data = mdata;
inflater = LayoutInflater.from(context);
}

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

@Override
public Object getItem(int position) {
return data.get(position);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.item, null);
viewHolder.imageView = (ImageView) convertView.findViewById(R.id.image);
viewHolder.title = (TextView) convertView.findViewById(R.id.title);
viewHolder.content = (TextView) convertView.findViewById(R.id.content);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.imageView.setImageResource(data.get(position).getImageResIdId());
viewHolder.title.setText(data.get(position).getmTitle());
viewHolder.content.setText(data.get(position).getmContext());
return convertView;
}

class ViewHolder {
private ImageView imageView;
private TextView title;
private TextView content;
}
}


效果



总结:基本上只显示文本的用ArrayAdapter比较简单些 ,再稍微复杂的有显示图片的可以用SimpleAdapter。基本上BaseAdapter是万能的,但是因为写适配器比较麻烦一些。所以,很贱的列表优先考虑ArrayAdapter和SimpleAdapter.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: