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>
分享到:
相关推荐
在这个Adapter中,你需要重写`getView()`方法,这是为ListView的每个列表项生成视图的地方。 ```java public class MyListAdapter extends BaseAdapter { private Context context; // 数据源 private List...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。它高效且可滚动,支持多种交互方式,如单击、长按等。本示例着重讲解如何在ListView中实现长按和单击事件的捕捉。 首先,我们要创建一个自定义...
BaseAdapter是ListView与数据源之间的桥梁,需要重写四个方法:`getCount()`、`getItem()`、`getItemId()`以及`getView()`。 ```java public class UserListAdapter extends BaseAdapter { private List<User> ...
优化ListView的第一步是重写Adapter的`getView()`方法。在未优化的代码中,每次调用`getView()`时都会创建一个新的View,这会导致大量不必要的对象创建。改进的方法是在`convertView`为null时才去inflate新的布局,...
总的来说,这个示例展示了如何在Android中实现ListView的分组布局,通过自定义Adapter和重写关键方法来处理不同类型的条目。开发者可以根据实际需求调整`getView`方法,以实现更复杂的效果,比如添加点击事件、动画...
1. **重写getView()方法**:在Adapter的getView()方法中,我们需要对每个convertView进行初始化,确保其状态与当前的数据项匹配。对于CheckBox,我们可以在数据项中保存一个布尔值来表示选中状态,然后在getView()中...
总之,实现“android ListView某几行加上标签”的功能,主要是通过自定义Adapter,根据数据项的状态来动态控制视图的显示。在实际开发中,我们还需要考虑性能优化、用户体验等因素,以提供更优秀的应用体验。
最后,实现`onIncreaseClick()`和`onDecreaseClick()`方法,更新数据源中的数量值,并调用Adapter的`notifyDataSetChanged()`方法,使ListView刷新显示: ```java public void onIncreaseClick(View view) { ...
在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。在某些场景下,我们可能需要在每个列表项中添加一个可选的复选框...总之,理解ListView的工作原理以及如何与Adapter交互是实现这种功能的关键。
我们需要创建一个自定义的Adapter,继承自BaseAdapter,重写其中的几个关键方法:`getCount()`(返回数据源的大小)、`getItem()`(获取指定位置的数据)、`getItemId()`(返回指定位置的唯一ID)以及`getView()`...
在Android开发中,ListView是一种常用的组件,用于展示大量的数据列表。然而,当ListView与EditText结合使用时,常常会遇到一个常见的问题:EditText无法获取焦点,导致软键盘无法弹出,影响用户输入。这个问题主要...
总结来说,本视频案例将引导我们学习如何在Android应用中使用ListView组件动态加载数据,这包括创建数据模型、自定义Adapter、设置数据源、绑定Adapter以及实现动态添加数据的逻辑。通过实践,我们将能更好地理解和...
在Android开发中,"标签云"(Tag Cloud)是一种常见的用户界面元素,它将大量标签以不同大小和颜色展示,以此来突出显示重要的或者频繁出现的词汇。这种设计模式能够帮助用户快速浏览和理解大量的信息,提高交互效率...
BaseAdapter是Adapter的一个基础实现,我们可以继承它并重写必要的方法,如`getCount()`(返回数据源的大小)、`getItem(int position)`(获取指定位置的数据项)、`getItemId(int position)`(返回数据项的ID)以及...
ListView是Android平台上常见的一种列表控件,用于展示大量数据,具有高效的滚动性能和自定义能力。在实际开发中,我们经常需要对ListView的数据进行分类显示,这样可以使信息更清晰、更有条理。"listview分类显示...
总结来说,"根据字母排列的listview"是一种常见的Android开发需求,通过自定义Adapter和排序算法可以实现。这个案例中,开发者提供了一个封装好的解决方案,只需传入数据即可实现字母排序的ListView,这对于开发者来...
在Android中,我们通常会自定义一个继承自BaseAdapter的类,例如`MyListAdapter`,在这个类中重写`getViewTypeCount()`、`getItemViewType(int position)`和`getView(int position, View convertView, ViewGroup ...
总之,"带checkbox的listview"是Android开发中常见的用户交互场景,通过ListView和CheckBox的结合,我们可以实现列表数据的单选或多选操作。理解并熟练掌握这一技术对于Android开发者来说至关重要,它能帮助我们构建...
在ListView中,我们通常使用Adapter来绑定数据和视图,而在流式Tag布局中,我们可以创建一个自定义Adapter,继承自BaseAdapter,然后将数据集(如ArrayList)传入Adapter,再在Adapter的`getView()`方法中生成并设置...