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

第二周笔记

2016-03-05 12:34 555 查看
Android ListView使用笔记

ListView的使用简单说明

目录

[TOC]
来生成目录:

目录

前言

代码流程

实例

前言

用ListView来展示视图列表,可以方便的控制图像显示;

代码流程

1、获取XML中的ListView控件的ID,View视图显示的地方:

mPhoneBookListView = (ListView) findViewById(R.id.list_view);


2、创建PhoneBookAdapter.class用于解析每一个List视图;

实例

ListViewDemo.class:

package com.jorkyin.myapp.listViewDemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import com.jorkyin.myapp.R;
import com.jorkyin.myapp.data.UserInfo;

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

/**
* Created by YinJian on 2016/3/2.
*/
public class ListViewDemo extends Activity {

private ListView mPhoneBookListView;
private List<UserInfo> mUserInfo = new ArrayList<>();
private PhoneBookAdapter mPhoneBookAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview_demo);

//初始化ListView控件
mPhoneBookListView = (ListView) findViewById(R.id.list_view);

//添加数据
mUserInfo.add(new UserInfo("jorkdn", 17));
mUserInfo.add(new UserInfo("jodyin", 23));
mUserInfo.add(new UserInfo("jordin", 70));
mUserInfo.add(new UserInfo("jordin", 30));
mUserInfo.add(new UserInfo("jordin", 12));
mUserInfo.add(new UserInfo("jordin", 21));

mPhoneBookAdapter = new PhoneBookAdapter(ListViewDemo.this, mUserInfo);

//设置Adapter参数
mPhoneBookListView.setAdapter(mPhoneBookAdapter);

//Item点击事件监听
mPhoneBookListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

if (mUserInfo.get(position) != null) {
//修改数据
mUserInfo.get(position).setName("ddfsfsf");
mUserInfo.get(position).setAge(56);
//更新页面
mPhoneBookAdapter.refreshData(mUserInfo);
} else {
Toast.makeText(ListViewDemo.this, "数据为空", Toast.LENGTH_LONG).show();
}
}
});

//Item长按事件监听
mPhoneBookListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(ListViewDemo.this, "长按 ", Toast.LENGTH_LONG).show();
return false;
}
});
}
}


PhoneBookAdapter.class :

package com.jorkyin.myapp.listViewDemo;

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

import com.jorkyin.myapp.R;
import com.jorkyin.myapp.data.UserInfo;

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

/**
* Created by YinJian on 2016/3/2.
*/
public <
4000
span class="hljs-class">class PhoneBookAdapter extends BaseAdapter {

private Context mContext;
private LayoutInflater mLayoutInflater;

private List<UserInfo> mUserInfo = new ArrayList<>();

public PhoneBookAdapter(Context context, List<UserInfo> userInfos) {
mContext = context;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mUserInfo = userInfos;
}

@Override
public int getCount() {
//返回多少条数据
return mUserInfo.size();
}

@Override
public Object getItem(int position) {
//返回某条数据的对象
return mUserInfo.get(position);
}

@Override
public long getItemId(int position) {
//返回某条数据的ID
return position;
}

@Override
public int getItemViewType(int position) {
//设置不同的ItemView
return super.getItemViewType(position);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
//返回数据视图
if (convertView == null) {
//解析item_phone_book_friend,并赋值给convertView;
convertView = mLayoutInflater.inflate(R.layout.item_phone_book_friend, null);
viewHolder = new ViewHolder();
//在View中获取控件
viewHolder.tv_name = (TextView) convertView.findViewById(R.id.item_phoneBook_tv_name);
viewHolder.tx_age = (TextView) convertView.findViewById(R.id.item_phoneBook_tv_age);
viewHolder.tv_avatar = (TextView) convertView.findViewById(R.id.item_phoneBook_iv_avatar);
//设置控件标记
convertView.setTag(viewHolder);
} else {
//获取控件标记
viewHolder = (ViewHolder) convertView.getTag();
}

//和数据之间进行绑定
viewHolder.tv_name.setText(mUserInfo.get(position).getName());
viewHolder.tx_age.setText(mUserInfo.get(position).getAge() + "岁");
viewHolder.tv_avatar.setText(mUserInfo.get(position).getName().subSequence(0, 1).toString().toUpperCase());

return convertView;
}

class ViewHolder {
TextView tv_name;
TextView tx_age;
TextView tv_avatar;
}

/**
* 刷新数据
**/
public void refreshData(List<UserInfo> userInfo) {
mUserInfo = userInfo;

//跟新列表数据
notifyDataSetChanged();
}
}


UserInfo.class :

package com.jorkyin.myapp.data;

/**
* Created by YinJian on 2016/3/4.
*/
public class UserInfo {
private String mName;
private int mAge;

public UserInfo(String name, int age) {
mName = name;
mAge = age;
}

public int getAge() {
return mAge;
}

public void setAge(int age) {
mAge = age;
}

public String getName() {
return mName;
}

public void setName(String name) {
mName = name;
}

}


activity_listview_demo.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/phone_book"
android:textSize="24sp"/>

<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</LinearLayout>


item_phone_book_friend.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="match_parent">

<TextView
android:id="@+id/item_phoneBook_iv_avatar"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@color/colorAccent"
android:gravity="center"
android:text="J"
android:textSize="35dp" />

<TextView
android:id="@+id/item_phoneBook_tv_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_toRightOf="@id/item_phoneBook_iv_avatar"
android:text="jorkyin" />

<TextView
android:id="@+id/item_phoneBook_tv_age"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/item_phoneBook_tv_name"
android:layout_toRightOf="@+id/item_phoneBook_iv_avatar"
android:text="4岁" />
</RelativeLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息