android基础入门ListView视图(8)
投稿于 被查看 19116 次 评论:84
android基础入门ListView视图(8)
一.ListView视图:
ListView 用来显示一个列表控件。
public class MainActivity extends ListActivity { String[] str = {"中国","法国","英国","瑞士","奥地利","美国","印度","梵蒂冈"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, str)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub Toast.makeText(this,"你点击了"+str[position],Toast.LENGTH_SHORT).show(); } }
这是实现的最基础的ListView列表:
MainActivity扩展了ListView类,而ListView类扩展了Activity类并且通过绑定到一个数据源来显示一个项列表。还要注意不用再布局文件中添加ListView控件,因为在ListView类中已经包含着一个ListView,在onCreate()方法中,使用setListAdapter()方法来用一个ListView以编程方式填充活动的整个屏幕。ArrayAdapter对象管理将由ListView显示的字符串数组。当点击了ListView中的一个列表选项时,将触发onListItemClick()方法,显示一条吐司信息。
运行图:
我们可以将要显示的字符串存储在strings.xml:
ListViewTest Settings Hello world! - 中国
- 法国
- 英国
- 瑞士
- 奥地利
- 美国
- 印度
- 梵蒂冈
- 马尔代夫
MainActivity.java:
public class MainActivity extends ListActivity { String[] str ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); str = getResources().getStringArray(R.array.str); setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, str)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub Toast.makeText(this,"你点击了"+str[position],Toast.LENGTH_SHORT).show(); } }
通过getResources()方法以编程方式来检索与应用程序捆绑的资源。
自定义ListView+自定义适配器(BaseAdapter):
ListView布局:
MainActivity.java:
public class MainActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置一个Adapter,使用自定义的Adapter setListAdapter(new TextImageAdapter(this)); } private class TextImageAdapter extends BaseAdapter{ private Context mContext; public TextImageAdapter(Context context) { this.mContext=context; } /** * 元素的个数 */ public int getCount() { return left.length; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } //用以生成在ListView中展示的一个个元素View public View getView(int position, View convertView, ViewGroup parent) { //优化ListView if(convertView==null){ convertView=LayoutInflater.from(mContext).inflate(R.layout.activity_main, null); ItemViewCache viewCache=new ItemViewCache(); viewCache.mTextLeft=(TextView)convertView.findViewById(R.id.textLeft); viewCache.mTextRight=(TextView)convertView.findViewById(R.id.textRight); convertView.setTag(viewCache); } ItemViewCache cache=(ItemViewCache)convertView.getTag(); //设置文本和图片,然后返回这个View,用于ListView的Item的展示 cache.mTextLeft.setText(left[position]); cache.mTextRight.setText(Right[position]); return convertView; } } private static class ItemViewCache{ public TextView mTextLeft; public TextView mTextRight; } //屏幕左边TextView private String[] left=new String[]{"国家","省","地区"}; // 屏幕右边TextView private String[] Right = new String[]{"中国","山东","滨州"}; }
这里我们自己定义了适配器,对于适配器后面我们会详细讲解。想添加列表的点击事件:
@Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub Toast.makeText(this, "你点击了"+left[position]+Right[position], Toast.LENGTH_SHORT).show(); }
运行效果:
用户评论