【控件篇】ListView 模板
来源:互联网 发布:金科信软件 编辑:程序博客网 时间:2024/06/03 07:21
Step 1: 毫无疑问,你首先要有一个主界面 (activity_main.xml)
<LinearLayout 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:orientation="vertical" tools:context=".MainActivity" ><ListView android:id="@+id/main_listview" android:layout_width="fill_parent" android:layout_height="fill_parent" ></ListView></LinearLayout>
这里主要讲述ListView的使用,就不写太多其他的东西了!
Step 2: 接下来,你还需要为ListView的子项定义一个布局 (activiaty_main_listitem.xml)
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/user_head_icon" android:layout_width="50dp" android:layout_height="50dp" android:layout_margin="15dp" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/user_nickname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="14sp" android:textStyle="bold" android:layout_marginTop="15dp" /> <TextView android:id="@+id/user_sign_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/user_nickname" android:textSize="12sp" android:textStyle="bold" android:layout_marginTop="8dp" /></RelativeLayout></LinearLayout>
Step 3: 接下来就是我们的 MarsterAdapter.java (模板适配器) 啦
public abstract class MarsterAdapter<T> extends BaseAdapter{private List<T> list = new ArrayList<T>();private Context context;private int itemViewId;public MarsterAdapter(Context context,int itemViewId,List<T> list){this.context = context;this.itemViewId = itemViewId;this.list = list;}public Context getContext(){return context;}@Overridepublic int getCount() {return list.size();}@Overridepublic T getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parents) {if(convertView==null){convertView = LayoutInflater.from(context).inflate(itemViewId, null);initItem(position, convertView, parents);}else{reloadItem(position, convertView, parents);}return convertView;}protected abstract void initItem(int position, View convertView, ViewGroup parents) ;protected abstract void reloadItem(int position, View convertView, ViewGroup parents) ;}
Step 4: 好了,模板适配器已经写好了,接下来我们要实现我们的用户列表所用的Adapter(UserAdapter.java)
public class UserAdapter extends MarsterAdapter<User>{private UserHolder holder;public UserAdapter(Context context, int itemViewId, List<User> list) {super(context, itemViewId,list);}@Overrideprotected void initItem(int position, View convertView, ViewGroup parents) {// TODO Auto-generated method stubholder = new UserHolder();holder.headIcon = (ImageView) convertView.findViewById(R.id.user_head_icon);holder.nickName = (TextView) convertView.findViewById(R.id.user_nickname);holder.signText = (TextView) convertView.findViewById(R.id.user_sign_text);setHolderView(position, convertView, parents, holder);convertView.setTag(holder);}@Overrideprotected void reloadItem(int position, View convertView, ViewGroup parents) {// TODO Auto-generated method stubholder = (UserHolder) convertView.getTag();setHolderView(position, convertView, parents, holder);}private void setHolderView(int position, View convertView, ViewGroup parents,UserHolder holder){holder.headIcon.setImageDrawable(getContext().getResources().getDrawable(getItem(position).getHeadIcon()));holder.nickName.setText(getItem(position).getNickName());holder.signText.setText(getItem(position).getSignText());}class UserHolder{ImageView headIcon;TextView nickName;TextView signText;}}
Step 5: 最后就是我们的列表界面了 MainActivity.java
public class MainActivity extends Activity {private ListView listView;private UserAdapter adapter;private List<User> list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();initData();}public void initViews(){list = new ArrayList<User>();adapter = new UserAdapter(this, R.layout.activity_mail_listitem, list);listView = (ListView) findViewById(R.id.main_listview);listView.setAdapter(adapter);}public void initData(){for(int i=0; i<20; i++){User user = new User();user.setHeadIcon(R.drawable.header);user.setNickName("kael"+i);user.setSignText("每天努力一丢丢,成就大牛的人生!"+i);list.add(user);}adapter.notifyDataSetChanged();}}
0 0
- 【控件篇】ListView 模板
- ListView控件
- ListView控件.
- listview 控件
- ListView控件
- ListView控件
- ListView控件
- ListView控件
- ListView控件
- 控件---listview
- ListView控件
- ListView控件
- Listview控件
- ListView控件
- ListView控件
- 模板控件
- 自定义控件 模板控件
- ListView----BaseAdapter模板
- 安装Linux双系统,资料整理【2015.3.24】
- sql中的case when的用法
- HttpSession与Hibernate中Session的区别
- EM 算法
- Android Volley学习
- 【控件篇】ListView 模板
- KD树
- 取给定正整数的指定bit位开始的指定长度的数据
- C++~数组/指针
- win32消息
- 6.1 理解事务
- 小马哥----高仿htc_m8tl手机刷机 芯片为6582 外观与行货一致,操作与检测基本无差别
- POJ 3070 Fibonacci.(矩阵快速幂)
- fcntl函数