自定义布局需要哪些东西?
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,实现自定义的下拉刷新,上拉加载
案例十四(深度定制的listview
利用反射机制,定制listview的scollbar,可以根据个人喜好替换scollbar的图标
见博客:http://blog.csdn.net/baidu_nod/article/details/37511143
仿ListView可视化定制控件-源码仿ListView可视化定制控件-源码仿ListView可视化定制控件-源码
Android ListView 的定制开发实例。欢迎大家下载学习
C#的ListView添加各种自定义控件,CheckBox,ComboBox等
主要介绍了Android开发之ListView的简单用法及定制ListView界面操作,结合实例形式分析了Android ListView界面布局相关操作技巧,需要的朋友可以参考下
本程序为Delphi中的ListView列表定制箭头及表头布局,可以让表头的文字靠左或者靠或显示,为表头增加一个箭头指示,老生长谈的问题,有喜欢的可拿去,纯Delphi代码实现,可以直接在D7编译,运行效果如上。
对ListView的修改 简单设计ListView
android-custom-array-adapter-demo, Android演示如何使用定制适配器填充 ListView Android定制适配器演示这里示例演示如何使用自定义布局模板显示一个基于 array 数据源的ListView 。 在这种情况下,有一个 User ...
可以定制一个ListView,能够在列中插入图像、下拉框、可上下调整的数字、进度条等等。 [功能] 全定制可视化界面 支持XP风格 轻易添加再定制的控件 可隐藏列 行、列、单元可以被Disable 每个单元、列可以有Tooltip ...
merge Adapter 对 android listview 的 自定制 非常有效 merge Adapter 对 android listview 的 自定制 非常有效 merge Adapter 对 android listview 的 自定制 非常有效
关于ListView的分段显示,有现成的库可用,比如 cwac-endless, 这个库不好之处,就是底部Loading的View无法定制。还有一个在google code上的androidpageablelistview 这个可以实现基本的分页,有手动操作显示上一页...
Android 图标加文字ListView定制Demo,编辑器:Android Studio 3.1.2。
实现ListView自定义Item,重写代理类,实现类似网易云pc客户端地效果
delphi xe8 移动开发框架中需要使用的三方控件,listview此控件扩展后能更好的使界面友好,可以定制很多功能,比自带的listview 操作简单,感谢作者分离。
详情请见http://blog.csdn.net/ranger0220/article/details/9628491
界面美观,定制性高;另外可快速列出大批量数据, 非常适合作数据库信息的显示控件。即使上万条记录,也能在不到1秒的时间内轻松列出。 2.实现了复选框功能(默认VirutalMode=true模式下CheckBoxes属性是无效...