android ListView 和 BaseAdapter 应用

步聚:

1.建立ListView对象;--(作用:绑定Adapter呈现数据)

2.建立ListView实现的Item栏位.xml布局;--(作用:实现ListView的栏位布局)

3.建立Item.xml 的View数据实例(类);--(作用:实现Item栏位数据接口)

4.继承BaseAdapter建立MyAdapter类class;--(作用:封装ListView的.xml布局与Item数据)

5.当然还要作更多的操作,这里例出简洁的方法;

adapter实现:

  1     private class UpdateAdpter extends BaseAdapter {
  2
  3         private LayoutInflater mInflater;
  4         private List<ItemData> mItemsData;
  5
  6         public UpdateAdpter(Context context, List<ItemData> listItemData) {
  7             this.mInflater = LayoutInflater.from(context);
  8             this.mItemsData = listItemData;
  9
 10         }
 11
 12         @Override
 13         public int getCount() {
 14             // TODO Auto-generated method stub
 15             return mItemsData.size();
 16         }
 17
 18         @Override
 19         public Object getItem(int position) {
 20             // TODO Auto-generated method stub
 21             return mItemsData.get(position);
 22         }
 23
 24         @Override
 25         public long getItemId(int position) {
 26             // TODO Auto-generated method stub
 27             return position;
 28         }
 29
 30         @Override
 31         public View getView(final int position, View convertView,
 32                 ViewGroup parent) {
 33             // TODO Auto-generated method stub
 34             ViewHolder holder;
 35             if (convertView == null) {
 36                 convertView = mInflater.inflate(
 37                         R.layout.activity_account_update_listview_item, null);
 38                 holder = new ViewHolder(convertView);
 39                 convertView.setTag(holder);
 40
 41             } else {
 42                 holder = (ViewHolder) convertView.getTag();
 43             }
 44             ItemData item = mItemsData.get(position);
 45             holder.title.setText(item.getTitle());
 46             holder.price.setText(item.getPrice());
 47             holder.text.setText(item.getBuyText());
 48             holder.status.setText(item.getStatus());
 49
 50             return convertView;
 51         }
 52
 53         public class ViewHolder {
 54             public TextView title;
 55             public TextView price;
 56             public TextView buytext;
 57             public TextView status;
 58
 59             ViewHolder(View view) {
 60                 title = (TextView) view
 61                         .findViewById(R.id.tv_accountupdateitem_title);
 62                 price = (TextView) view
 63                         .findViewById(R.id.tv_accountupdateitem_price);
 64                 text = (TextView) view
 65                         .findViewById(R.id.tv_accountupdateitem_buytext);
 66                 status = (TextView) view.findViewById(R.id.tv_accountupdate_status);
 67             }
 68         }
 69     }
 70
 71     private class ItemData {
 72         private String title;//标题
 73         private String price;//价格
 74         private String text;//内容
 75         private String status;//状态
 76
 77         public void setTitle(String value) {
 78             title = value;
 79         }
 80
 81         public String getTitle() {
 82             return title;
 83         }
 84
 85         public void setPrice(String value) {
 86             price = value;
 87         }
 88
 89         public String getPrice() {
 90             return price;
 91         }
 92
 93         public void setText(String value) {
 94             buytext = value;
 95         }
 96
 97         public String getText() {
 98             return buytext;
 99         }
100
101         public void setStatus(String value) {
102             status = value;
103         }
104
105         public String getStatus() {
106             return status;
107         }
108     }

activity调有实例:

public class UpdateActivity extends Activity implements OnClickListener{
private ListView UpdateLView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_account_update);
        iniView();
    }

    public void iniView() {
       UpdateLView = (ListView) findViewById(R.id.account_update_listView);
        iniListViewDataUpdate();//初始listview数据
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
    }

    private void iniListViewDataUpdate(){
        ItemData itemData;
        List<ItemData> listItemData = new ArrayList<ItemData>();

        for (int i=0;i<2;i++){
            itemData=  new ItemData();
            itemData.setTitle("title");
            itemData.setPrice("price");
            itemData.setText("text");
            itemData.setStatus("status");

            listItemData.add(itemData);
        }
        nowUpdateLView.setAdapter(new UpdateAdpter(this,listItemData));
    }

item.xml;

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:descendantFocusability="blocksDescendants"
    android:gravity="center_vertical" >

    <LinearLayout
        android:id="@+id/lyt_roomlistview_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:background="@android:color/white" >

            <TextView
                android:id="@+id/tv_accountupdateitem_title"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="title"
                android:textSize="18sp" />

            <TextView
                android:id="@+id/tv_accountupdate_status"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="12dp"
                android:layout_weight="1"
                android:gravity="left|center"
                android:text="button"
                android:textColor="@android:color/holo_orange_dark"
                android:textSize="16sp" />

            <TextView
                android:id="@+id/tv_accountupdateitem_price"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="price"
                android:textColor="@android:color/holo_orange_dark"
                android:textSize="16sp" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:background="@android:color/white" >

            <TextView
                android:id="@+id/tv_accountupdateitem_buytext"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center_vertical"
                android:text="Textview"
                android:textSize="16sp" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:layout_gravity="center"
                android:background="@android:color/holo_orange_dark"
                android:gravity="center"
                android:text="@string/title_buy"
                android:textColor="@android:color/white"
                android:textSize="16sp" />

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

效果图:

时间: 2024-11-06 16:53:08

android ListView 和 BaseAdapter 应用的相关文章

Android ListView使用BaseAdapter与ListView的优化 (转至 http://www.open-open.com/lib/view/open1339485728006.html)

在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点.读者可以试试用SimpleAdapter添加一个按钮到ListView的条目中,会发现可以添加,但是却无法获得焦点,点击操作被ListView的Item所覆盖.这时候最方便的方法就是使用灵活的适配器BaseAdapter了. ▲图4-35 BaseAdapter中的方法 使用BaseAdapter必须写一

Android ListView使用BaseAdapter与ListView的优化

在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点.读者可以试试用SimpleAdapter添加一个按钮到ListView的条目中,会发现可以添加,但是却无法获得焦点,点击操作被ListView的Item所覆盖.这时候最方便的方法就是使用灵活的适配器BaseAdapter了. ▲图4-35 BaseAdapter中的方法 使用BaseAdapter必须写一

Android ListView之BaseAdapter

话说开发用了各种Adapter之后感觉用的最舒服的还是BaseAdapter,尽管使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView.GridView.Gallery.Spinner等等.它是直接继承自接口类Adapter的,使用BaseAdapter时需要重写很多方法,其中最重要的当属getView,因为这会涉及到ListView优化等问题. BaseAdapter与其他Adapter有些不一样,其他的Adapter可以直接在其构造方法中进行数据的设置

android ListView 自定义 BaseAdapter

先上效果图 由上面的效果图可以看出:页面中的LISTVIEW的每一项,都是由两个TEXTVIEW组成,初始化的时候,只显示第一个TEXTVIEW,在这里我们成为标题,而内容部分的setVisible属性为"GONE".为Ite添加onClick监听器,在每次点击的时候,显示内容部分,这里需要调用BaseAdapter的notifyDataSetChanged()进行刷新显示. 代码部分: 1 class MyLayout extends LinearLayout { 2 3 priva

android ListView之BaseAdapter的使用方式

通常在使用自己定义适配器的时候,我们都会掌握一种固定的模式.充分利用convertView+缓存的方式. private ArrayList<ListBean> list ; private LayoutInflater mInflater; public DetailListAdapter(Context context,ArrayList<ListBean> list){ this.list=list; mInflater = LayoutInflater.from(conte

Android——ListView布局+适配器(三)

Android--ListView布局+适配器(三) package com.example.administrator.newstop; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import andro

Android——ListView多布局+适配器(二)

Android--ListView多布局+适配器(二) <span style="font-size:18px;">package com.example.administrator.newstop.entity; /** * Created by Administrator on 2016/8/4. */ public class News { private String title; private String pubDate; private int img; p

[转]Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件

Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件. 1.为了防止拖动ListView时,在列表末尾重复数据显示.需要加入 HashMap<Integer,View> lmap = new HashMap<Integer,View>();其中Integer为列表位置,View为子项视图,加入数据前首先if (lmap.get(position)==null) ,满足条件时,加入lmap.put(position, convertView

android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色

前言:因为找了N多网上的资源都没有好的解决方案,别人都是只给思路没给具体源码,真TMD纠结,干嘛求别人,自己动手才是真,最痛恨那些所谓大牛的作风,给了点点代码就让别人去想,你让我们这种小白情何于堪!!!!!!此例是基于listview来实现本地sqlite实现的! 二话不说,程序猿求的是有图有真相有源码!大家下载后有什么问题可以找到本人:QQ508181017 核心代码如下 1.数据库操作类 package com.icq.demo.db; import java.util.ArrayList;