zoukankan      html  css  js  c++  java
  • ListView之两种实现 简单例子

    ListView是列单形式显示的组件,和GridView类似,我们也需要用到Adapter来控制数据与组件之间的联系。ListView有两种方式显示,一种是继承了ListActivity的Activity,整个UI都是个ListView;另一种是单独的ListView设置.

    现在来看看继承ListActivity的ListView:

    程序运行效果:

    继承ListActivity的Activity会自动生成一个ListView来填充整个UI,我们不要通过设置setCotentView来设置UI. 在这个ListView里面全部都是TextView组件,在main.xml中定义,而TextView里面的内容则是在strings.xml中定义的,通过<string-array>标签来定义。

    strings.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="hello">Hello World, MyListViewActivity!</string>
        <string name="app_name">Showlistview</string>
    
        <!-- 设置String数组 -->
        <string-array name="students">
            <item>邓光桥</item>
            <item>邓名流</item>
            <item>向洪伟</item>
            <item>何德聪</item>
            <item>张龙灿</item>
            <item>许仙</item>
            <item>姚明</item>
            <item>乔丹</item>
            <item>邓稼先</item>
            <item>蔡元培</item>
            <item>许三多</item>
            <item>王宝强</item>
        </string-array>
    
    </resources>

    main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 在整个XML设置为一个TextView -->
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp"
        android:textSize="20dp" />

    MyListViewActivity:

    public class MyListViewActivity extends ListActivity
    {
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		// setContentView(R.layout.main);
    
    		// 得到要显示的数据,在strings.xml中定义的string-array
    		final String[] data = getResources().getStringArray(R.array.students);
    		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.main, data);
    		setListAdapter(adapter);
    
    		// 得到这个ListActivity自动生成的ListView
    		ListView listView = getListView();
    		listView.setOnItemClickListener(new OnItemClickListener()
    		{
    			public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    			{
    				Toast.makeText(MyListViewActivity.this, "你选择的学生是:" + data[position] + "\n" + "学生ID是:" + (position + 1), Toast.LENGTH_LONG).show();
    			}
    		});
    	}
    }

    如果要单独的实现listView,只要在UI里面添加ListView,在设置这个ListView的Adapter就可以了,和上面出不多。
    不过现在有个问题:不知道ListView里面可不可以放其他类型的控件,我试过EditText也是可以的,不过Button就出错了,而且layout也会出错,不知道哪位可以告诉我怎么实现呢?


  • 相关阅读:
    Python学习杂记_2_格式化字符串的一些操作
    Python学习杂记_1_PyCharm使用的一些收获
    autolayout sizeclass 资料集锦
    据说这个是获得当前的控制器方法,没试过
    Mac下搭建php开发环境【转】
    搜索栏会消失 uisearchbar 狂点消失的问题解决
    mac下XAMPP服务器配置多站点配置局域网配置 (转)
    在 Xcode 6 中使用矢量图( iPhone 6 置配 UI)
    收到远程通知,怎么区分是点击通知栏提醒进去的还是在foreground收到的通知?
    开发经验之状态机思想,分别使用了swift,OC,C,PHP语言实现
  • 原文地址:https://www.cnblogs.com/hanyuan/p/2587315.html
Copyright © 2011-2022 走看看