android 基础-自定义listView的实现 adapter 方法解析

原创 2015年07月07日 09:02:16
*BaseAdapter  自定义adapter适配listview
 *getCount()方法 设置ListView显示条目个数
 *getView()方法 设置指定位置的条目视图
 *string 资源文件的使用

 *News类——属性的封装

public class MainActivity extends Activity {
ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list=(ListView)findViewById(R.id.list);
String[]data={"的萨芬的","阿萨德发送","阿瓦尔维权","违法打算","怀仁堂噶","七4人","圣达菲尔","阿凡达岁的","犹太人","阿尔","温柔的","抢 ","高峰时段低点",};
int[]imges={R.drawable.image1,R.drawable.image2,R.drawable.image3,R.drawable.image4,R.drawable.image5,R.drawable.image6,R.drawable.image7,R.drawable.image8,R.drawable.image9,R.drawable.image10,R.drawable.image11,R.drawable.image12,R.drawable.image13};
Resources resources=getResources();
String[]title=resources.getStringArray(R.array.titles);
ArrayList<News> dataList=new ArrayList<News>();

for(int i=0;i<data.length;i++){
News info=new News();
info.setData(data[i]);
info.setImages(imges[i]);
info.setTitle(title[i]);
dataList.add(info);
}
MyAdapter adapter=new MyAdapter(MainActivity.this,dataList);
list.setAdapter(adapter);

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}


public class MyAdapter extends BaseAdapter{
int i=0;
LayoutInflater inflater;
LinearLayout layout;
ArrayList<News> arrayList;
public MyAdapter(Context context,ArrayList<News> arrayList){
this.inflater = LayoutInflater.from(context);
this.i=arrayList.size();
this.arrayList=arrayList;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return i;
}


@Override
public View getView(int position, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
//1、得到视图对象
//找到当前布局组件
//得到布局加载器

//inflater.inflate(R.layout.listitem, null)得到布局 第二个参数一般为空;
LinearLayout layout=(LinearLayout)inflater.inflate(R.layout.listitem, null);
ImageView image=(ImageView)layout.findViewById(R.id.item_img);
TextView tv=(TextView)layout.findViewById(R.id.item_tv);
TextView title=(TextView)layout.findViewById(R.id.item_title);
//2、设置数据到视图对象上

// News news=(News)arrayList.get(position);
image.setImageResource(arrayList.get(position).getImages());
tv.setText(arrayList.get(position).getData());
title.setText(arrayList.get(position).getTitle());
//3、添加到ListView

return layout;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}


@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
}


public class News {
private  String title,data;
private  int images;
public  String getTitle() {
return title;
}
public  void setTitle(String title) {
this.title = title;
}
public  String getData() {
return data;
}
public  void setData(String data) {
this.data = data;
}
public  int getImages() {
return images;
}
public  void setImages(int images) {
this.images = images;
}
}


activity_main.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="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >


   <ListView
       android:id="@+id/list"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
/>

</RelativeLayout>



listitem.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/item_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >


        <ImageView
            android:id="@+id/item_img"
            android:layout_width="75dp"
            android:layout_height="75dp" />


        <TextView
            android:id="@+id/item_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical" />
    </LinearLayout>


</LinearLayout>

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>


    <string name="app_name">DalyWork4_Demo02(ListView BaseAdapter)</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
<string-array name="titles">
   <item>1</item>
   <item>2</item>
   <item>3</item>
   <item>4</item>
   <item>5</item>
   <item>6</item>
   <item>7</item>
   <item>8</item>
   <item>9</item>
   <item>0</item>
   <item>-</item>
   <item>1</item>
   <item>2</item>
</string-array>
</resources>


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android自定义adapter的listview

  • 2016年06月19日 17:49
  • 1.71MB
  • 下载

2014-10-27Android学习------布局处理(八)------自定义ListView的监听事件和Adapter的实现-----城市列表应用程序

写一篇文章很辛苦啊!!! 转载请注明,联系请邮件nlp30508@qq.com 我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的...

Android之Listview(item为单选题)自定义adapter,像考试时前面的10几道单选题的实现

用于展现重复性的东西,Listview比较好用,看了别人的自定义Adapter(item是EditText,能够很好地获取到每一个item的EditText值)。又由于在做项目的需要,故特制了一个it...

Android中自定义Adapter实现ListView动态刷新进度条

这几天做上传图片时,实现动态更新进度条,花费了我不少脑筋,一是android不是很熟悉,二是自己java基础,或者说是编程基础不扎实,不会学以致用,这两发块,是以后加强的重点!  费话不多说!说说我用...
  • jdsjlzx
  • jdsjlzx
  • 2011年07月29日 15:43
  • 3182

自定义adapter的基础上Listview优化方案以及几个小错误(checkbox吃掉点击事件以及对象重复问题)

每次adapter运行都有一个getcount,有多少条就调用多少次getview,就会解析多少次xml文件(创建view,条数多了很消耗时间),13年谷歌提出了一个机制,每次只缓存一屏幕多几个,把划...

Android 自定义Adapter以实现自定义填充ListView的Item

1>实体类---即ListView中各个Item中填充的内容 package com.demo.cxc.compoundview.com.demo.cxc.entity; import java....

Android listview与adapter用法(包括自定义需要的适配器)

一个ListView通常有两个职责。 (1)将数据填充到布局。 (2)处理用户的选择点击等操作。 第一点很好理解,ListView就是实现这个功能的。第二点也不难做到,在后面的学习中读者会发现,...

Android成长之路(8)——ListView优化和自定义Adapter的应用

最近,在一个小项目中,发现ListView绝对是最常用的控件之一。通常,有ListView的地方,就会有自定义的Adapter。在这里,顺便就梳理一下ListView的使用和优化还有了解Adapter...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 基础-自定义listView的实现 adapter 方法解析
举报原因:
原因补充:

(最多只允许输入30个字)