`

ListView讨论

阅读更多



 1.ListView简单用法

第一步:

在activity_main.xml中增加:

<ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
  />

 

第二步:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1  ,data); //data是自定义数组
        ListView listView = (ListView) findViewById(R.id.list_view);
        listView.setAdapter(adapter);

 

2.定制LIstView界面(MVC)

V层:

在activity_main.xml建立一个ListView控件

新建立一ListView的页面子布局

(绘制V层的时候会自动调用getView())

 

M层:

建立一需要展示的实体类

 

C层:

建立一自定义Adapter(继承ArrayAdapter)

 

例子如下:

public class FruitAdapter extends ArrayAdapter<Fruit> {

    private int resourceId;

    /***
     *
     * @param context  域,上下文
     * @param textViewResourceId  布局ID
     * @param objects  实体对象
     */
    public FruitAdapter(Context context,int textViewResourceId, List<Fruit> objects ) {
        super(context, textViewResourceId, objects);
        resourceId = textViewResourceId;
    }

 

  *Provides the metrics for the shadow image. These include the dimensions of
         * the shadow image, and the point within that shadow that should
         * be centered under the touch location while dragging.

    //控制展示,相当于DAO类,获得数据

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Fruit fruit = getItem(position); //自动将List<Fruit>中的值解出,获取当前项的Fruit实例

        //new 出布局、控件
        View view = LayoutInflater.from(getContext()).inflate(resourceId,null); (布局)
        ImageView fruitImage = (ImageView) view.findViewById(R.id.fruit_image);  (控件)
        TextView fruitName = (TextView) view.findViewById(R.id.fruit_name);   (控件)
        //赋值 

        fruitImage.setImageResource(fruit.getImageId());  
        fruitName.setText(fruit.getName());  
        return view;


    }
}

 

在MainActivity中调用,相当于Action类

例子如下:

private List<Fruit> fruitList = new ArrayList<Fruit>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化fruitList

        initFruits();
        FruitAdapter adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList);
        ListView listView = (ListView) findViewById(R.id.list_view);
        //返回数据至V层

        listView.setAdapter(adapter);

    }


    private void initFruits() {
        Fruit apple = new Fruit("Apple",R.drawable.a);
        fruitList.add(apple);
        Fruit banana = new Fruit("Banana",R.drawable.b);
        fruitList.add(banana);
        Fruit orange = new Fruit("Orange",R.drawable.c);
        fruitList.add(orange);
        Fruit watermelon = new Fruit("Watermelon",R.drawable.d);
        fruitList.add(watermelon);
        Fruit pear = new Fruit("Pear",R.drawable.e);
        fruitList.add(pear);
        Fruit grape = new Fruit("Grape",R.drawable.f);
        fruitList.add(grape);
        Fruit pineapple = new Fruit("Pineapple",R.drawable.g);
        fruitList.add(pineapple);
        Fruit strawberry = new Fruit("Strawberry",R.drawable.h);
        fruitList.add(strawberry);
        Fruit cherry = new Fruit("Cherry",R.drawable.i);
        fruitList.add(cherry);
        Fruit mango = new Fruit("Mango",R.drawable.j);
        fruitList.add(mango);

    }

 

getView:

getView()方法是ListView的每个列表项目绘制在屏幕上时被调用

 

3.提升listview的运行效率

View view;
        if (convertView == null) {
            view = LayoutInflater.from(getContext()).inflate(resourceId, null);
        } else {
            view = convertView;
        }

  ConvertView是对之前加载好的布局进行缓存

 

 4.Android获取LayoutInflater对象的方法总结

获取context对象

一:

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View child = inflater.inflate(R.layout.child, null);

 二:

LayoutInflater inflater = LayoutInflater.from(context);
View child = inflater.inflate(R.layout.child, null);

 

方法1和方法2其实都是对context().getSystemService()的使用

 

  • 大小: 57.6 KB
分享到:
评论

相关推荐

    ListView嵌套GridView以及ListVIew嵌套ListVIew

    接下来,我们讨论ListView嵌套ListView的时间轴效果。时间轴通常用于展示按时间顺序排列的事件,如社交媒体的动态更新。在这种情况下,主ListView用于展示各个时间点,而每个时间点下又可能有多个子事件,这些子事件...

    viewpage嵌套listview,效果:滑动listview删除,滑动非listview区域viewpage翻页

    接下来,我们讨论`ListView`。ListView是一个可滚动的视图,用于显示大量的数据项列表,每个条目可以由一个或多个View组成。它可以高效地处理大量数据,通过复用已创建的View(也称为ViewHolder模式)来降低内存消耗...

    c# winform ListView实现图片浏览

    在这个特定的案例中,我们讨论的是如何利用ListView控件来实现图片浏览的功能。这个功能在很多应用中都有其用武之地,比如相册查看器或者简单的图片管理工具。 首先,我们要理解ListView的基本结构。ListView控件...

    WPF_ListView横向显示.zip

    本示例着重讨论如何实现ListView的横向显示,这在某些场景下能提供独特的用户界面体验。 在传统的ListView使用中,数据项通常是垂直堆叠的,即每行显示一个数据项。然而,通过自定义布局或使用特定的数据模板,我们...

    listview里面可以拖动Item上下_ListView_listview拖动项_

    在标题“listview里面可以拖动Item上下”中,我们讨论的是如何实现ListView控件中项目的拖放功能,允许用户通过鼠标拖动来改变列表项的顺序。这种特性在很多应用程序中非常有用,比如文件管理器、任务管理器或者...

    android ListView 网格布局

    由于标题提到的是“ListView的网格视图”,我们将主要讨论使用GridView的情况。GridView是一个二维的列表视图,可以设置每行的列数,从而达到网格效果。 以下是一步一步实现这个功能的过程: 1. 创建布局文件:...

    ListView嵌套ListView

    下面将详细讨论这个主题。 首先,我们来看“ListView嵌套ListView”的基本概念。当一个ListView的每个条目本身又包含了一个或多个ListView时,就形成了嵌套。这样的设计通常用于展示层级关系的数据,比如目录树或者...

    TabHost中填充自定义ListView

    接下来,我们将讨论如何在每个`Tab`中填充自定义的`ListView`。自定义`ListView`主要包括两部分:自定义`Adapter`和自定义`ListView`的布局文件。 1. 自定义`Adapter`:`Adapter`是连接数据源与`ListView`的桥梁。...

    listview加载多幅图片

    在本文中,我们将深入探讨如何在ListView中加载多幅图片,并且讨论图片的存储策略,以及如何利用ImageList组件进行有效的管理。 首先,ListView控件本身并不直接支持加载图像。为了在ListView中显示图片,我们需要...

    android BaseAdapter listView优化

    9. **使用FastAdapter或RecyclerView**:虽然题目主要讨论BaseAdapter,但现代Android开发更推荐使用RecyclerView,它提供了更强大的功能和性能优化,如ItemAnimator、ItemDecoration等。 总之,ListView和...

    delphi中ListView拖动图标

    可以参考开源项目、在线教程和Delphi社区论坛中的相关讨论,以便更好地理解和掌握这一技术。 总之,Delphi中的ListView提供了丰富的功能,包括图标拖动,这极大地增强了用户体验。通过理解并应用上述步骤,开发者...

    listview实现表格效果,带表格线

    标题“listview实现表格效果,带表格线”表明我们要讨论的是如何利用ListView来模拟表格布局,并添加分割线以清晰地展示每个单元格的边界。 首先,我们要理解ListView的基本结构。ListView由多个ListView项...

    ListView嵌套控件.zip

    首先,我们来讨论ListView与ComboBox的结合使用。ComboBox是一种下拉列表框,它可以提供一个可编辑的文本输入框以及一个下拉的选项列表。在ListView中嵌套ComboBox,可以为每个ListView项提供额外的选择或操作。实现...

    老外写的ListView

    标签直接点明了讨论的核心,即ListView控件。在Android开发中,ListView是一种复用视图,它可以高效地处理大量数据,通过适配器(Adapter)将数据与视图进行绑定。ListView的特性包括但不限于:滚动流畅性、Item点击...

    VS之listview使用

    在Visual Studio(VS)开发环境中,ListView控件是一种常见的用户界面元素,用于显示多列数据,常用于数据浏览和管理。本篇文章将深入探讨“VS之listview使用”,结合提供的...如有任何疑问,可在博客下方留言讨论。

    wpf listView分组排序

    接下来,我们讨论排序。在WPF中,可以通过设置`CollectionView`的`SortDescriptions`属性来对ListView的数据进行排序。`CollectionView`是数据源的一个视图,它可以提供排序、过滤和分组等功能。例如: ```csharp ...

    使用HorizonalScrollView实现ListView横向滑动

    在本教程中,我们将讨论如何结合`HorizontalScrollView`和`ListView`,实现一个可以水平滑动的列表视图。 首先,了解`HorizontalScrollView`的基本用法。`HorizontalScrollView`是一个单行布局,它只接受一个直接的...

    使用listview分页显示数据

    接着,我们讨论分页。在ListView中实现分页通常需要以下几个步骤: 1. 数据获取:根据每页显示的数量,从服务器或本地数据库中获取相应的数据。例如,首次加载时可能请求第一页的数据,后续滚动时则请求下一页。 2...

    VB6 ListView与ImageList实例

    接下来,我们讨论ImageList组件。ImageList用于存储和管理图像,可以为ListView控件提供图标。在ImageList中,你可以添加不同大小的图片,并通过ImageIndex属性将这些图片分配给ListView的Items。首先,你需要在...

    C# winform ListView 中实现可编辑文本或双击出现下拉列表框

    首先,我们来讨论如何在ListView中实现文本编辑。默认情况下,ListView项是只读的,不能直接编辑。为了添加编辑功能,我们需要在ListView的ItemSelectionChanged事件中动态插入一个TextBox控件,将其位置和大小设置...

Global site tag (gtag.js) - Google Analytics