標籤:
用類對象作為ArrayAdapter綁定的基礎資料型別 (Elementary Data Type)(和SimpleAdater效果類似)
一般ArrayAdapter綁定的基礎資料型別 (Elementary Data Type)是String,接下來介紹一下類對象作為基礎資料型別 (Elementary Data Type);
首先,建立一個類News,這個類作為基本的資料類型
package com.example.news;import android.R.integer;import android.widget.ImageView;public class News { private String title; private String content; private int imageId; News(String title,String content,int imageId){ this.title=title; this.content=content; this.imageId=imageId; } public String getTitle() { return title; } public String getContent() { return content; } public int getimageId() { return imageId; } public void setTitle(String title){ this.title=title; } public void setContent(String content){ this.content=content; }}
接下來先把listView的item的布局確定下來,有一個Textview和ImageView;
<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/news_title" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <ImageView android:id="@+id/news_image" android:layout_width="wrap_content" android:layout_height="wrap_content"/></LinearLayout>
然後自訂一個適配器NewsAdapter,繼承ArrayAdapter,並且實現其中的兩個方法,resourceId也就是上面的listView的item的布局的id;
package com.example.news;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;public class NewsAdapter extends ArrayAdapter<News>{ private int resourceId; public NewsAdapter(Context context, int resource, List<News> objects) { super(context, resource, objects); // TODO Auto-generated constructor stub resourceId=resource; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub News news=getItem(position); View view ; if(convertView==null){ view=LayoutInflater.from(getContext()).inflate(resourceId, null); }else { view=convertView; } TextView news_title=(TextView) view.findViewById(R.id.news_title); ImageView news_image=(ImageView) view.findViewById(R.id.news_image); news_title.setText(news.getTitle()); news_image.setImageResource(news.getimageId()); return view; }}
然後在主布局中添加一個listview控制項,這個簡單,大家肯定都會
<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" tools:context="${relativePackage}.${activityClass}" > <ListView android:id="@+id/list_title" android:layout_width="wrap_content" android:layout_height="match_parent"></ListView></RelativeLayout>
然後重寫主activity
import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ListView;public class MainActivity extends Activity { private ListView list_title; private List<News> list= new ArrayList<News>(); private NewsAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); list_title=(ListView) findViewById(R.id.list_title); initList(); adapter=new NewsAdapter(this, R.layout.news_item,list); list_title.setAdapter(adapter); } private void initList() { News news1=new News("標題1", "1", R.drawable.ic_launcher); list.add(news1); News news2=new News("標題2", "2", R.drawable.ic_launcher); list.add(news2); News news3=new News("標題3", "3", R.drawable.ic_launcher); list.add(news3); News news4=new News("標題4", "4", R.drawable.ic_launcher); list.add(news4); } }
介面效果
不懂得可以留言
我的android學習經曆34