用類對象作為ArrayAdapter綁定的基本數據類型(和SimpleAdater效果類似) 一般ArrayAdapter綁定的基本數據類型是String,接下來介紹一下類對象作為基本數據類型; 首先,新建一個類News,這個類作為基本的數據類型 接下來先把listView的item的佈局確定下來, ...
用類對象作為ArrayAdapter綁定的基本數據類型(和SimpleAdater效果類似)
一般ArrayAdapter綁定的基本數據類型是String,接下來介紹一下類對象作為基本數據類型;
首先,新建一個類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); } }
界面效果
不懂得可以留言