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

Android BaseAdapter 图+文+代码 +ListView

2016-06-29 10:24 375 查看
建立一个item的java类,命名为,ItemBean.代码如下:

package com.example.bsaeadapter;

/**
* Created by 联想 on 2016/6/29.
*/
public class ItemBean {
public int ItemImageResId;
public String Itemtitle;
public String ItemContent;

public ItemBean(int itemImageResId, String itemtitle, String itemContent) {
ItemImageResId = itemImageResId;
Itemtitle = itemtitle;
ItemContent = itemContent;
}
}

这个用于获取数据。

新建一个名为item.xml的子布局文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/lv_image"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_toEndOf="@+id/lv_image"
android:text="Title"
android:gravity="center"
android:textSize="25sp"/>
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_toEndOf="@+id/lv_image"
android:layout_below="@+id/tv_title"
android:text="Content"
android:gravity="center_vertical"
android:textSize="20sp"/>

</RelativeLayout>

建立适配器java类命名为MyAdapter,代码如下:

package com.example.bsaeadapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

import static com.example.bsaeadapter.R.id.tv_title;

/**
* Created by 联想 on 2016/6/29.
*/
public class MyAdapter extends BaseAdapter{
private List<ItemBean> mList;
private LayoutInflater minflater;

public MyAdapter(Context context, List<ItemBean> list) {
mList = list;
minflater = LayoutInflater.from(context);
}

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

@Override
public Object getItem(int i) {
return mList.get(i);
}

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

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
//没有利用缓存机制的适配器,没有任何优化处理
/*    View v = minflater.inflate(R.layout.item,null);
ImageView imageView = (ImageView) v.findViewById(R.id.lv_image);
TextView title = (TextView) v.findViewById(tv_title);

ItemBean bean = mList.get(i);

TextView content = (TextView) v.findViewById(R.id.tv_content);
imageView.setImageResource(bean.ItemImageResId);
title.setText(bean.Itemtitle);
content.setText(bean.ItemContent);
return v;
*/
//,没有优化处理
/*
//普通的优化的适配器
if(view == null)
{
//利用的Listview的缓存机制
view = minflater.inflate(R.layout.item,null);

return view;
}
ImageView imageView = (ImageView) view.findViewById(R.id.lv_image);
TextView title = (TextView) view.findViewById(tv_title);

ItemBean bean = mList.get(i);

TextView content = (TextView) view.findViewById(R.id.tv_content);
imageView.setImageResource(bean.ItemImageResId);
title.setText(bean.Itemtitle);
content.setText(bean.ItemContent);
return view;
//普通的listview适配
*/

//最好的适配优化方案,避免耗时操作,内存优化,和少使用findviewbyid进行优化
ViewHolder viewHolder;
if (view == null)
{
viewHolder = new ViewHolder();
view = minflater.inflate(R.layout.item,null);
viewHolder.imageView = (ImageView) view.findViewById(R.id.lv_image);
viewHolder.title = (TextView) view.findViewById(tv_title);
viewHolder.content = (TextView) view.findViewById(R.id.tv_content);
view.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) view.getTag();
}
ItemBean bean = mList.get(i);

TextView content = (TextView) view.findViewById(R.id.tv_content);
viewHolder.imageView.setImageResource(bean.ItemImageResId);
viewHolder.title.setText(bean.Itemtitle);
viewHolder.content.setText(bean.ItemContent);
return view;

}
class ViewHolder {

public ImageView imageView;
public TextView title;
public TextView content;
}
}


接下来在主布局中使用。。MainActivity代码如下:

package com.example.bsaeadapter;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<ItemBean> itemBeanList = new ArrayList<>();
for (int i = 0;i<20;i++)
{
itemBeanList.add(new ItemBean(
R.mipmap.ic_launcher,
"我是标题"+i,
"我是内容"+i
));
}
ListView listView = (ListView) findViewById(R.id.iv_main);
listView.setAdapter(new MyAdapter(this,itemBeanList));
}
}


对应的主布局文件activity_main.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.bsaeadapter.MainActivity">

<ListView
android:id="@+id/iv_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>

。。

接下来好好享受,学习吧。。。。唯有努力和汗水不会让你失望,加油吧,骚年。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  BaseAdapter ListView