自定义布局需要哪些东西?
1、数据模型(数据)
2、显示数据的组件
3、重写BaseAdapter中的相关方法
数据模型代码:
package cc.androidos.layout;public class RSS {
private String title; public RSS(String title) {
this.title = title;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
}
@Override
public String toString() {
return title;
}}
显示组件的布局代码:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/tablelist"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TableRow android:id="@+id/TableRow01" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/TextView1" android:layout_width="200px"
android:layout_height="wrap_content" android:text="TextView1"></TextView>
<ImageButton android:id="@+id/ImageButton01"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="80px"></ImageButton>
</TableRow>
</TableLayout>
这个Activity和重写BaseAdapter的代码:
package cc.androidos.layout;import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.Scroller;
import android.widget.TextView;public class MyLayout extends ListActivity {
//要被显示的数据模型
public static List<RSS> dataModel = new ArrayList<RSS>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getListView().setSelector(getResources().getDrawable(R.drawable.icon));
//将组定义的List组件加入到当前的Activity中
setListAdapter(new MyListAdapter(getApplicationContext()));
dataModel.add(new RSS("title 1"));
dataModel.add(new RSS("title 2"));
dataModel.add(new RSS("title 3"));
dataModel.add(new RSS("title 4"));
}
/*自定义布局组件中用于显示数据的组件类**/
public class ViewHolder {
TextView mTextView;
ImageButton mIcon;
} // 自定义的布局组件
public class MyListAdapter extends BaseAdapter {
private LayoutInflater mInflater = null;
private Bitmap mIcon1 = null;
private Bitmap mIcon2 = null;
private Context mcContext = null; public MyListAdapter(Context context) {
this.mcContext = context;
mInflater = LayoutInflater.from(this.mcContext);
mIcon1 = BitmapFactory.decodeResource(mcContext.getResources(),
R.drawable.delete);
mIcon2 = BitmapFactory.decodeResource(mcContext.getResources(),
R.drawable.delete);
} @Override
public int getCount() {
return dataModel.size();
} @Override
public Object getItem(int position) {
return dataModel.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
String tag = "getView";
final ViewHolder holder;
if (convertView == null) {
//使用XML文件填充整个布局
convertView = mInflater.inflate(R.layout.list, null);
holder = new ViewHolder();//生成存放数据的组件模型
holder.mTextView = (TextView) convertView
.findViewById(R.id.TextView1);
holder.mIcon = (ImageButton) convertView
.findViewById(R.id.ImageButton01);
convertView.setTag(holder);//将存放数据的组件模型加入到整个View视图中
} else {
holder = (ViewHolder) convertView.getTag();
}
Log.d(tag, "start get View.....");
holder.mTextView.setText(dataModel.get(position).toString());
holder.mIcon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);
holder.mIcon.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {//设置按钮点击事件
holder.mTextView.setBackgroundColor(Color.WHITE);
holder.mIcon.setVisibility(View.VISIBLE);
}
});
return convertView;
}
}}
这样自定义完成后,显示数据将会有一个图片和一个字符串放在ListActivity中每项中
分享到:
相关推荐
总之,定制ListView涉及多个方面,包括适配器的编写、自定义布局的设计、事件监听以及性能优化。通过学习和实践,我们可以根据项目需求打造功能强大的、用户体验优秀的列表组件。记得在实际开发中,始终关注代码的...
2. **自定义Adapter**:为了深度定制ListView,我们需要创建一个继承自BaseAdapter的自定义Adapter。在这个Adapter中,重写`getCount()`返回数据项数量,`getItem(int position)`获取指定位置的数据,`getItemId(int...
在这个例子中,我们将深入探讨如何满足ListView的Item的一些定制化需求。 首先,我们需要了解ListView的工作原理。ListView通过Adapter来绑定数据,Adapter是连接数据源与ListView的桥梁。在Android中,常见的...
本篇将详细介绍如何通过反射机制来定制ListView的滚动条。 首先,我们需要了解滚动条的基本概念。在Android中,滚动条是一种视觉指示器,显示视图是否可以滚动以及滚动的位置。默认的滚动条通常为灰色条状,但我们...
ListView的定制开发是Android开发中的重要技能,因为它能够帮助开发者实现更丰富的用户体验和更高效的数据显示。本教程将深入探讨如何对ListView进行自定义,以满足特定的应用需求。 首先,我们来理解ListView的...
但是,它可能不满足所有复杂的定制需求。 2. **自定义Adapter**:创建一个自定义的Adapter,处理父ListView和子ListView的数据绑定。这样,可以在适配器中处理子ListView的布局和滚动逻辑。 3. **使用...
- 嵌套ListView可能导致性能问题,因为每个ListView都需要有自己的滑动机制。因此,要确保正确处理滑动手势,避免冲突。 - 监听器的设置和事件分发可能会变得复杂,需要仔细处理。 通过以上步骤,你可以成功地在...
在getView()方法中,为每个ListView条目创建一个GridView实例,并设置其适配器,这样每个ListView条目就能显示一个定制的GridView了。 接下来,我们讨论ListView嵌套ListView的时间轴效果。时间轴通常用于展示按...
在WPF中,我们可以利用XAML语言,通过DataTemplate和ControlTemplate来定制ListView的外观和行为。 1. **自定义ListView项模板**: 列表项的显示样式可以通过定义DataTemplate来改变。例如,如果你想要每个列表项...
- 如果数据结构允许,可以考虑使用其他组件替代,如RecyclerView,它提供了更好的性能和更多的定制选项。 总之,ListView嵌套ListView虽然能够构建复杂多级的用户界面,但需要开发者具备较高的性能优化意识和技术...
在VB(Visual Basic)编程环境中,ListView控件是一种常用且功能强大的组件,它允许开发者以列表形式展示数据。在默认情况下,ListView...理解并掌握这些核心概念,你就能灵活地定制ListView控件,满足各种复杂的需求。
在C#编程中,ListView控件是Windows Forms和WPF应用程序中常见的组件,用于显示数据集,通常以列表或网格的形式。本主题将深入探讨如何在C#的ListView中添加和使用各种自定义控件,如CheckBox和ComboBox,以增强用户...
ListView是Android平台上一种非常重要的控件,用于展示大量的数据列表,具有高度的可定制性和灵活性。在Android应用开发中,ListView通常被用来显示各种类型的数据,如联系人、消息、菜单选项等。本教程将深入讲解...
描述中提到“第一级ListView的item使用自定义组件”,这表明每个父ListView的条目都是一个定制的视图,这个视图包含了一个子ListView。自定义组件的实现通常涉及到创建一个新的XML布局文件,然后在代码中创建对应的...
本篇文章将深入探讨如何“定制ListView”,包括它的简单设计以及如何进行自定义优化。 首先,我们来看ListView的基本使用。ListView是Android SDK中的一个ViewGroup,它可以在垂直方向上显示一串可滚动的项目。每个...
这里我们关注的是一个仿ListView的可视化定制控件,它为开发者提供了更灵活的方式来展示数据列表。在Delphi这样的编程环境中,创建自定义控件可以充分利用其丰富的图形用户界面(GUI)工具和事件驱动的编程模型。 ...
ListView是Android平台上一个非常重要的控件,主要用于展示大量的数据列表,具有良好的滚动性能和可定制性。本笔记将深入探讨ListView的基本使用,帮助初学者掌握这个控件的关键知识点。 一、ListView的基本结构 ...
在VB(Visual Basic)编程中,ListView控件是常见的数据展示组件,用于显示列表或表格形式的数据。在某些情况下,为了提升用户界面...通过这种方式,你可以自由地定制ListView的显示效果,使用户界面更加个性化和专业。
Android开发之ListView的简单用法及定制ListView界面操作示例 标题:Android开发之ListView的简单用法及定制ListView界面操作示例 描述:本文主要介绍了Android开发之ListView的简单用法及定制ListView界面操作,...