在ListView<1>中,简单的实现了List的效果,但是有很大弊病,UI界面是与用户交互的直接窗口,显然,list模板是一个单一的TextView过于单调,如果,这个模板我们可以集合android的UI组件自行设计,效果就会很好。
在这个例子中,新建了一个XML文件show.xml,专门用来设置list的每一条目显示的模板,在本例中,只是ImageView和TextView的结合,当然还可以有更复杂的,用ImageView,TextView,Button等等组件以RelativeLayout的布局可以创建出我们喜欢的list模板。
在activity_main.xml中创建一个标签,<ListView>,这样在MainActivity.java中拿到这个ListView,然后加入适配器,那么显示的内容就会显示在activity_main的ListView的位置,所以在activity_main的布局中我们可以让ListView放在一个合适的位置。
在本例中有一个比较重要的地方,在MyAdapter中的getView方法中如何将我们创建的show.xml表现的布局作为ListView的显示形式,代码如下:
View view = View.inflate(MainActivity.this, R.layout.show, null);
这一行代码可以看出它的作用是拿到show.xml模板的view,在前面的讲过将xml文件实例化为view对象,有三种形式,代码如下:
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.main, null); LayoutInflater inflater = LayoutInflater.from(context); View layout = inflater.inflate(R.layout.main, null); LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.main, null);
其实这三种形式的源码都是一样的,看view的inflate函数的源码:
/** * Inflate a view from an XML resource. This convenience method wraps the {@link * LayoutInflater} class, which provides a full range of options for view inflation. * * @param context The Context object for your activity or application. * @param resource The resource ID to inflate * @param root A view group that will be the parent. Used to properly inflate the * layout_* parameters. * @see LayoutInflater */ public static View inflate(Context context, int resource, ViewGroup root) { LayoutInflater factory = LayoutInflater.from(context); return factory.inflate(resource, root); }
public class MainActivity extends Activity { private ListView listView; private int i=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView)findViewById(R.id.list); listView.setAdapter(new MyAdapter()); } private class MyAdapter extends BaseAdapter{ @Override public int getCount() { return 50; } @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = View.inflate(MainActivity.this, R.layout.show, null); ImageView image = (ImageView)view.findViewById(R.id.image); image.setImageResource(R.drawable.win); TextView textView = (TextView)view.findViewById(R.id.textView); textView.setTextSize(20); textView.setText("More effort,more fournate" + i++); return view; } } }
相关推荐
NULL 博文链接:https://aarongo.iteye.com/blog/1919251
Android listview实现自动自动换行!
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>( MainActivity.this,android.R.layout.simple_list_item_1,msWordS ); ListView listView = findViewById(R.id.Main_ListView); listView....
android关于listview之列表分组,像Q上一样显示列表项
android多选ListView示例
Android使用ListView实现时间轴
Android利用listview浏览新闻
Android开发中listview属性的介绍
利用android studio实现listview嵌套listview,技术含量不是特别高,希望能帮助大家,这里就意思一下,给1分算啦
Android 单击listview弹出popupwindow弹出框,里面还附带listview右滑删除按钮。博客网址:http://blog.csdn.net/qq_16064871
Android ListView边框圆角美化,可以用来仿iphone的个别界面。相当有用。美观。
android 使用ListView来实现表格
Android ListView每个Item上面的有TextView和Button,为ListView每个Item上面的按钮添加事件,并获取TextView文本信息。
</ListView> </RelativeLayout> Adapter 常用数据适配器(Adapter) Common Data Adapter BaseAdapter即基本的适配器,使用BaseAdapter时需要实现四个方法。 public abstract int getCount() //得到Item条目的总数 ...
通过一个例子实现ListView列表视图并且点击不同的项进入不同的界面,需要的可以看看
Android 实现ListView滚动到底部自动加载数据
Android ListView卡片效果,源码下载。
android 一些listview不同的例子