`
想不尽的念
  • 浏览: 24175 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android实现listview tag,重写adapter

 
阅读更多
public class SoftListAdapter extends BaseAdapter {
	private Context context;
	private ArrayList<Map<String, Object>> list;

	public SoftListAdapter(Context con, ArrayList<Map<String, Object>> lis) {
		this.context = con;
		this.list = lis;
	}

	// 决定 getView循环几次
	@Override
	public int getCount() {
		return list.size();
	}

	@Override
	public Object getItem(int arg0) {
		return arg0;
	}

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

	// 自定义适配方法
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		if (list.get(position).get("tag") != null
				&& (Boolean) list.get(position).get("tag")) {
			// 如果是标签项
			convertView = LayoutInflater.from(context.getApplicationContext())
					.inflate(R.layout.permission_soft_vlist_tag, null);
		} else {
			// 否则就是数据项
			convertView = LayoutInflater.from(context.getApplicationContext())
					.inflate(R.layout.permission_soft_vlist, null);
			ImageView img = (ImageView) convertView.findViewById(R.id.img);
			img.setImageDrawable((Drawable) list.get(position).get("img"));
		}

		TextView text = (TextView) convertView.findViewById(R.id.text);
		text.setText(list.get(position).get("text").toString());

		return convertView;
	}
}

	ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
			map.put("text", tagString);
			map.put("tag", true);
			data.add(map);

<?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="fill_parent"
    android:orientation="horizontal"
    android:padding="5dip" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_gravity="center"
        android:layout_marginLeft="5dp"
        android:src="@drawable/ic_launcher"
        android:textColor="#FFFFFFFF"
        android:textSize="22dp" />

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="10dp"
        android:textColor="#FFFFFFFF"
        android:textSize="18dp" />

</LinearLayout>

<?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:background="@drawable/background_color"
    android:paddingBottom="5dip"
    android:paddingLeft="10dip"
    android:paddingTop="5dip" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="20dip"
        android:gravity="center_vertical"
        android:textColor="#ffffff" >
    </TextView>

</LinearLayout>
分享到:
评论

相关推荐

    实现listview监听button

    在这个Adapter中,你需要重写`getView()`方法,这是为ListView的每个列表项生成视图的地方。 ```java public class MyListAdapter extends BaseAdapter { private Context context; // 数据源 private List...

    android listview长按,单击各种事件捕捉

    在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。它高效且可滚动,支持多种交互方式,如单击、长按等。本示例着重讲解如何在ListView中实现长按和单击事件的捕捉。 首先,我们要创建一个自定义...

    Android中ListView,SQLite,BaseAdapter的结合

    BaseAdapter是ListView与数据源之间的桥梁,需要重写四个方法:`getCount()`、`getItem()`、`getItemId()`以及`getView()`。 ```java public class UserListAdapter extends BaseAdapter { private List&lt;User&gt; ...

    Android ListView适配器(Adapter)优化方法详解

    优化ListView的第一步是重写Adapter的`getView()`方法。在未优化的代码中,每次调用`getView()`时都会创建一个新的View,这会导致大量不必要的对象创建。改进的方法是在`convertView`为null时才去inflate新的布局,...

    Android实现的ListView分组布局改进示例

    总的来说,这个示例展示了如何在Android中实现ListView的分组布局,通过自定义Adapter和重写关键方法来处理不同类型的条目。开发者可以根据实际需求调整`getView`方法,以实现更复杂的效果,比如添加点击事件、动画...

    android listview控件复用问题解决

    1. **重写getView()方法**:在Adapter的getView()方法中,我们需要对每个convertView进行初始化,确保其状态与当前的数据项匹配。对于CheckBox,我们可以在数据项中保存一个布尔值来表示选中状态,然后在getView()中...

    android ListView某几行加上标签

    总之,实现“android ListView某几行加上标签”的功能,主要是通过自定义Adapter,根据数据项的状态来动态控制视图的显示。在实际开发中,我们还需要考虑性能优化、用户体验等因素,以提供更优秀的应用体验。

    ListView中item有两个按钮增加和减少

    最后,实现`onIncreaseClick()`和`onDecreaseClick()`方法,更新数据源中的数量值,并调用Adapter的`notifyDataSetChanged()`方法,使ListView刷新显示: ```java public void onIncreaseClick(View view) { ...

    android ListView中CheckBox使用方法

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在某些场景下,我们可能需要在每个列表项中添加一个可选的复选框...总之,理解ListView的工作原理以及如何与Adapter交互是实现这种功能的关键。

    带按键可点击的listview

    我们需要创建一个自定义的Adapter,继承自BaseAdapter,重写其中的几个关键方法:`getCount()`(返回数据源的大小)、`getItem()`(获取指定位置的数据)、`getItemId()`(返回指定位置的唯一ID)以及`getView()`...

    自定义ListView解决ListView+EditText焦点的问题

    在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。然而,当ListView与EditText结合使用时,常常会遇到一个常见的问题:EditText无法获取焦点,导致软键盘无法弹出,影响用户输入。这个问题主要...

    视频案例-3.ListView动态添加数据

    总结来说,本视频案例将引导我们学习如何在Android应用中使用ListView组件动态加载数据,这包括创建数据模型、自定义Adapter、设置数据源、绑定Adapter以及实现动态添加数据的逻辑。通过实践,我们将能更好地理解和...

    android 标签云的实现

    在Android开发中,"标签云"(Tag Cloud)是一种常见的用户界面元素,它将大量标签以不同大小和颜色展示,以此来突出显示重要的或者频繁出现的词汇。这种设计模式能够帮助用户快速浏览和理解大量的信息,提高交互效率...

    含按钮的ListView

    BaseAdapter是Adapter的一个基础实现,我们可以继承它并重写必要的方法,如`getCount()`(返回数据源的大小)、`getItem(int position)`(获取指定位置的数据项)、`getItemId(int position)`(返回数据项的ID)以及...

    listview分类显示

    ListView是Android平台上常见的一种列表控件,用于展示大量数据,具有高效的滚动性能和自定义能力。在实际开发中,我们经常需要对ListView的数据进行分类显示,这样可以使信息更清晰、更有条理。"listview分类显示...

    根据字母排列的listview

    总结来说,"根据字母排列的listview"是一种常见的Android开发需求,通过自定义Adapter和排序算法可以实现。这个案例中,开发者提供了一个封装好的解决方案,只需传入数据即可实现字母排序的ListView,这对于开发者来...

    ListView分离Item的Demo

    在Android中,我们通常会自定义一个继承自BaseAdapter的类,例如`MyListAdapter`,在这个类中重写`getViewTypeCount()`、`getItemViewType(int position)`和`getView(int position, View convertView, ViewGroup ...

    带checkbox的listview

    总之,"带checkbox的listview"是Android开发中常见的用户交互场景,通过ListView和CheckBox的结合,我们可以实现列表数据的单选或多选操作。理解并熟练掌握这一技术对于Android开发者来说至关重要,它能帮助我们构建...

    流式Tag布局

    在ListView中,我们通常使用Adapter来绑定数据和视图,而在流式Tag布局中,我们可以创建一个自定义Adapter,继承自BaseAdapter,然后将数据集(如ArrayList)传入Adapter,再在Adapter的`getView()`方法中生成并设置...

Global site tag (gtag.js) - Google Analytics