1,ListView 是android开发中最常用的控件之一,一般构成列表包括三个元素,ListView:用来展示列表的视图、Adapter:数据与视图连接的桥梁、Data:具体的数据包括 字符串 图片 或者控件。
适配器一般有以下几种类型
ArrayAdapter:Android中最简单的一种适配器,专门用于列表控件。只显示一行数据。
SimpleAdapter:此适配器有最好的扩充性,可以自定义出各种效果。经常使用静态数据填充列表。
CursorAdapter:通过游标向列表提供数据。
ResourceCursorAdapter:这个适配器扩展了CursorAdapter,知道如何从资源创建视图。
SimpleCursorAdapter:这个适配器扩展了ResourceCursorAdapter,从游标中得列创建 TextView/ImageView视图。下面获取通讯录的示例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
>
<ListView
android:id="@+id/contacts_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</ListView>
</LinearLayout>
package net.csdn.blog.androidtoast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
ListView mListView;
ArrayList<Map<String, String>> listData;
static final String NAME = "name";
static final String NUMBER = "number";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getContacts();
}
/**
* 获取联系人列表
*/
private void getContacts() {
mListView=(ListView) findViewById(R.id.contacts_list);
listData = new ArrayList<Map<String, String>>();
//获取数据库Cursor
Cursor cur=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
startManagingCursor(cur);
while (cur.moveToNext()) {
Map<String, String> mp = new HashMap<String, String>();
long id = cur.getLong(cur.getColumnIndex("_id"));
Cursor pcur = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + Long.toString(id),
null, null);
// 处理多个号码的情况
String phoneNumbers = "";
while (pcur.moveToNext()) {
String strPhoneNumber = pcur.getString(pcur.getColumnIndex(
ContactsContract.CommonDataKinds.Phone.NUMBER));
phoneNumbers += strPhoneNumber + ":";
}
phoneNumbers += "\n";
pcur.close();
String name = cur.getString(cur.getColumnIndex("display_name"));
mp.put(NAME, name);
mp.put(NUMBER, phoneNumbers);
listData.add(mp);
}
cur.close();
// 建立一个适配器去查询数据
ListAdapter adapter = new SimpleAdapter(this, listData, android.R.layout.simple_list_item_2,
new String[]{NAME, NUMBER},
new int[] {android.R.id.text1, android.R.id.text2});
mListView.setAdapter(adapter);
//为listView添加事件监听
mListView.setOnItemSelectedListener(new ListView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(), "当前所在行为:"+Long.toString(parent.getSelectedItemId()+1), 1).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
}
2,GridView 网格视图,用于显示多行多列。直接上示例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
>
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:numColumns="3"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:scrollbars="vertical">
<ImageView
android:layout_height="100dip"
android:id="@+id/ItemImage"
android:layout_width="80dip"
android:src="@drawable/png1"
android:layout_gravity="center_horizontal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/ItemText" />
</LinearLayout>
package net.csdn.blog.androidtoast;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
//定义图片整型数组
private int[] mImages={
R.drawable.png1,
R.drawable.png2,
R.drawable.png3,
R.drawable.png4,
R.drawable.png5,
R.drawable.png6,
R.drawable.png7,
R.drawable.png8,
R.drawable.png9
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//实例化GridView
GridView mGridView=(GridView) findViewById(R.id.gridview);
// 生成动态数组,并且传入数据
ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < 9; i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", mImages[i]);// 添加图像资源的ID
map.put("ItemText", "NO." + String.valueOf(i+1));// 按序号做ItemText
lstImageItem.add(map);
}
//构建一个适配器
SimpleAdapter simple = new SimpleAdapter(this, lstImageItem,
R.layout.gridviewitem,
new String[] { "ItemImage", "ItemText" }, new int[] {
R.id.ItemImage, R.id.ItemText });
mGridView.setAdapter(simple);
//添加选择项监听事件
mGridView.setOnItemClickListener(new GridView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast toast=Toast.makeText(getApplicationContext(), "你选择了"+(position+1)+"号图片", 1);
toast.setGravity(Gravity.BOTTOM, 0, 0);
toast.show();
}
});
}
}
- 大小: 42.8 KB
- 大小: 71.4 KB
- 大小: 71.9 KB
分享到:
相关推荐
在Android开发中,ListView和GridView是两种非常重要的布局控件,尤其在展示大量数据时,它们提供了高效且可滚动的视图。以下是关于这两个控件及其相关知识点的详细说明: 1. **ListView**: - ListView是Android ...
在Android开发中,ListView和GridView是两种常用的布局控件,它们用于展示大量数据。ListView以其垂直滚动、可复用视图的优势,常用于显示一列数据;而GridView则以网格形式展示,通常用于图片或者小图标等需要均匀...
在Android应用开发中,图片加载是一项重要的任务,尤其是在ListView、GridView和ViewPager等组件中,大量图片的展示可能会导致性能问题,比如应用卡顿或者内存溢出。为了优化用户体验,开发者通常会采用异步加载策略...
以上就是关于"Listview嵌套Gridview-demo"的知识点。在实际开发中,这样的设计可以用于展示复杂的、多维度的数据,如商品详情页展示商品的不同规格选项。但需要注意,嵌套布局可能增加复杂性并影响性能,因此需要...
在Android开发中,UI界面的展示是至关重要的,RecyclerView、ListView和GridView是常见的列表控件,用于展示大量的数据。本文将深入探讨这三个组件,并通过一个Demo_recyclerview的实例源码来解析它们的工作原理和...
在Android开发中,ListView和GridView是两种常用的布局控件,它们各自有其特定的应用场景。ListView主要用于展示大量的可滚动数据,而GridView则呈现一个固定的网格布局。然而,在某些情况下,我们可能需要在一个...
在Android开发中,ListView和GridView是两种非常常用的控件,它们用于展示大量数据,并且具有良好的滚动性能。这两个组件在用户界面设计中扮演着至关重要的角色,尤其在展示列表或网格形式的数据时。本篇文章将深入...
在Android开发中,UI设计是至关重要的一环,而`ListView`和`GridView`是两种常用的布局控件,常用于展示大量的数据列表。本教程通过一个名为"android-UI.rar"的压缩包,提供了关于Android `GridView`和`ListView`的...
2. **内嵌GridView**:在`getView()`方法中,创建一个`GridView`实例,并将其添加到列表项的视图中。设置`GridView`的`Adapter`,通常也是一个自定义的`Adapter`,用于管理`GridView`内的数据。 3. **处理数据**:...
在Android开发中,ListView和GridView是两种常用的布局控件,它们在展示大量数据时非常有用。本篇文章将深入探讨如何在ListView中嵌套GridView,以及实现这一功能的关键知识点。 首先,ListView是一种可以滚动的...
总的来说,Android开发中的ScrollView嵌套ListView和GridView是一项挑战,但通过巧妙地使用SwipeRefreshLayout、自定义适配器和滚动事件处理,我们可以构建出高效且功能丰富的用户界面。同时,不断优化性能和用户...
在Android应用开发中,RecyclerView是取代ListView和GridView的现代组件,它提供了更高的性能和更灵活的布局管理。本文将深入探讨如何使用RecyclerView实现GridView和ListView混排的效果,这对于创建复杂和自定义的...
在Android开发中,ListView和GridView是两种常用的列表控件,它们可以用来展示大量的数据并提供良好的用户体验。当我们在设计一个类似新浪微博或陌陌客户端的界面时,常常会遇到需要在一个ListView中嵌套GridView的...
在Android开发中,ListView和GridView是两种常用的列表控件,用于展示大量的数据。它们的核心功能是通过适配器(Adapter)来实现数据与视图之间的绑定。本篇将深入探讨如何打造一个万能的适配器,使得ListView和...
"安卓listview相关相关-ListviewGridview空数据处理.zip"这个压缩包显然包含了处理ListView和GridView无数据场景的方法。首先,我们来了解如何处理ListView的空数据情况。 1. **创建空视图**: 在ListView的适配器中...
在Android开发中,ListView和GridView是两种常用的列表控件,它们可以用来展示大量数据并实现良好的用户体验。在处理像评论、朋友圈或者QQ空间这样的列表时,通常需要将多个元素(如图片、文字)以网格的形式排列,...
在Android开发中,下拉刷新(Pull-to-Refresh)功能是一种常见的用户交互设计,它允许用户通过在列表顶部向下拉动来加载更多数据或更新现有内容。`android-pulltorefresh-listview`是一个专为ListView实现下拉刷新...
总结来说,ListView嵌套GridView是Android开发中的一个实用技巧,它允许我们在列表的每一项中展示复杂的布局,比如网格。通过理解ListView和GridView的工作原理,以及如何创建自定义适配器,我们可以构建出功能丰富...