`
badboywang
  • 浏览: 64700 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

定制自己的ListView

阅读更多

自定义布局需要哪些东西? 
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

    2. **自定义Adapter**:为了深度定制ListView,我们需要创建一个继承自BaseAdapter的自定义Adapter。在这个Adapter中,重写`getCount()`返回数据项数量,`getItem(int position)`获取指定位置的数据,`getItemId(int...

    关于ListView的Item的一些定制化需求的例子

    在这个例子中,我们将深入探讨如何满足ListView的Item的一些定制化需求。 首先,我们需要了解ListView的工作原理。ListView通过Adapter来绑定数据,Adapter是连接数据源与ListView的桥梁。在Android中,常见的...

    定制listview的scollbar

    本篇将详细介绍如何通过反射机制来定制ListView的滚动条。 首先,我们需要了解滚动条的基本概念。在Android中,滚动条是一种视觉指示器,显示视图是否可以滚动以及滚动的位置。默认的滚动条通常为灰色条状,但我们...

    ListView 的定制开发实例

    ListView的定制开发是Android开发中的重要技能,因为它能够帮助开发者实现更丰富的用户体验和更高效的数据显示。本教程将深入探讨如何对ListView进行自定义,以满足特定的应用需求。 首先,我们来理解ListView的...

    listView嵌套listViewDemo

    但是,它可能不满足所有复杂的定制需求。 2. **自定义Adapter**:创建一个自定义的Adapter,处理父ListView和子ListView的数据绑定。这样,可以在适配器中处理子ListView的布局和滚动逻辑。 3. **使用...

    Android listview嵌套listview

    - 嵌套ListView可能导致性能问题,因为每个ListView都需要有自己的滑动机制。因此,要确保正确处理滑动手势,避免冲突。 - 监听器的设置和事件分发可能会变得复杂,需要仔细处理。 通过以上步骤,你可以成功地在...

    ListView嵌套GridView以及ListVIew嵌套ListVIew

    在getView()方法中,为每个ListView条目创建一个GridView实例,并设置其适配器,这样每个ListView条目就能显示一个定制的GridView了。 接下来,我们讨论ListView嵌套ListView的时间轴效果。时间轴通常用于展示按...

    WPF ListView 漂亮样式

    在WPF中,我们可以利用XAML语言,通过DataTemplate和ControlTemplate来定制ListView的外观和行为。 1. **自定义ListView项模板**: 列表项的显示样式可以通过定义DataTemplate来改变。例如,如果你想要每个列表项...

    listView嵌套listView

    - 如果数据结构允许,可以考虑使用其他组件替代,如RecyclerView,它提供了更好的性能和更多的定制选项。 总之,ListView嵌套ListView虽然能够构建复杂多级的用户界面,但需要开发者具备较高的性能优化意识和技术...

    vb ListView 可编辑

    在VB(Visual Basic)编程环境中,ListView控件是一种常用且功能强大的组件,它允许开发者以列表形式展示数据。在默认情况下,ListView...理解并掌握这些核心概念,你就能灵活地定制ListView控件,满足各种复杂的需求。

    C# ListView中添加多种自定义控件源码

    在C#编程中,ListView控件是Windows Forms和WPF应用程序中常见的组件,用于显示数据集,通常以列表或网格的形式。本主题将深入探讨如何在C#的ListView中添加和使用各种自定义控件,如CheckBox和ComboBox,以增强用户...

    ListView开发实例 ListView示例 ListView案例 小例子 源码

    ListView是Android平台上一种非常重要的控件,用于展示大量的数据列表,具有高度的可定制性和灵活性。在Android应用开发中,ListView通常被用来显示各种类型的数据,如联系人、消息、菜单选项等。本教程将深入讲解...

    ListView嵌套ListView的demo

    描述中提到“第一级ListView的item使用自定义组件”,这表明每个父ListView的条目都是一个定制的视图,这个视图包含了一个子ListView。自定义组件的实现通常涉及到创建一个新的XML布局文件,然后在代码中创建对应的...

    定制Listview

    本篇文章将深入探讨如何“定制ListView”,包括它的简单设计以及如何进行自定义优化。 首先,我们来看ListView的基本使用。ListView是Android SDK中的一个ViewGroup,它可以在垂直方向上显示一串可滚动的项目。每个...

    仿ListView可视化定制控件-源码

    这里我们关注的是一个仿ListView的可视化定制控件,它为开发者提供了更灵活的方式来展示数据列表。在Delphi这样的编程环境中,创建自定义控件可以充分利用其丰富的图形用户界面(GUI)工具和事件驱动的编程模型。 ...

    listview的小demo

    ListView是Android平台上一个非常重要的控件,主要用于展示大量的数据列表,具有良好的滚动性能和可定制性。本笔记将深入探讨ListView的基本使用,帮助初学者掌握这个控件的关键知识点。 一、ListView的基本结构 ...

    改变ListView网格颜色

    在VB(Visual Basic)编程中,ListView控件是常见的数据展示组件,用于显示列表或表格形式的数据。在某些情况下,为了提升用户界面...通过这种方式,你可以自由地定制ListView的显示效果,使用户界面更加个性化和专业。

    Android开发之ListView的简单用法及定制ListView界面操作示例

    Android开发之ListView的简单用法及定制ListView界面操作示例 标题:Android开发之ListView的简单用法及定制ListView界面操作示例 描述:本文主要介绍了Android开发之ListView的简单用法及定制ListView界面操作,...

Global site tag (gtag.js) - Google Analytics