两个demo,参考hellogv的blog
主要的步骤如下:
package com.example.listviewtest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.widget.ListView; import android.widget.SimpleAdapter; /** * ListView的用法: * 1.初始化listview的数据源 * 2.通过SimpleAdapter将数据源与listview的layout绑定 * 3.将构建好的 adapter 与 listView 绑定 * @author hint */ public class MainActivity extends Activity { List<HashMap<String,String>> myList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化数据源 initData(); ListView listView = (ListView)findViewById(R.id.myListView); //数据源 与 listview的layout适配 SimpleAdapter mSchedule = new SimpleAdapter(this, myList, R.layout.item_list, new String[]{"ItemTitle","ItemText"}, new int[]{R.id.itemTitle,R.id.itemText}); //listview绑定adapter listView.setAdapter(mSchedule); } private void initData(){ myList = new ArrayList<HashMap<String,String>>(); for(int i = 0; i < 30 ; i++){ HashMap<String,String> map = new HashMap<String, String>(); map.put("ItemTitle", "title "+i); map.put("ItemText", "text "+i); myList.add(map); } } @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; } }
demo2:
这个demo复杂一点:
package com.example.listviewtest; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; /** *1.自定义adpter实现BaseAdapter接口->ListViewAdpter。 *2.ListViewAdpter中通过LayoutInflater(布局泵)渲染listView中每个单独的view。 *3.将每个单独的view组成一个view数组 *4.绑定当前的listview和ListViewAdpter * @author hint */ public class MainActivity2 extends Activity { private ListView listView ; private String[] itemTitles = {"标题1","标题2","标题3","标题4",}; private String[] itemTexts = {"内容1","内容2","内容3","内容4",};; private int[] itemImagese = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView)findViewById(R.id.myListView); listView.setAdapter(new ListViewAdpter(itemTitles,itemTexts,itemImagese)); } class ListViewAdpter extends BaseAdapter{ View[] itemViews; public ListViewAdpter(String[] itemTitles,String[] itemTexts,int[] itemImagese) { itemViews = new View[itemTitles.length]; for(int i = 0; i < itemTitles.length; i++){ itemViews[i] = makeItemView(itemTitles[i],itemTexts[i],itemImagese[i]); } } private View makeItemView(String itemTitle, String itemText, int itemImages) { LayoutInflater inflater = (LayoutInflater)MainActivity2.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // LayoutInflater inflater2 = MainActivity2.this.getLayoutInflater(); View itemView = inflater.inflate(R.layout.item_list, null); TextView text = (TextView)itemView.findViewById(R.id.itemText); text.setText(itemText); TextView title = (TextView)itemView.findViewById(R.id.itemTitle); title.setText(itemTitle); ImageView image = (ImageView)itemView.findViewById(R.id.itemImage); image.setImageResource(itemImages); return itemView; } @Override public int getCount() { return itemViews.length; } @Override public Object getItem(int position) { return itemViews[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ return itemViews[position]; } return convertView; } } @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; } }