• 转:android listView 继承ListActivity的用法


    在手机中经常有列表方式。如果Activity中只有唯一一个List(这也是通常的情况),可以继承ListActivity来实现。我们用两个例子来学习List。

    List例子一:利用Android自带的List格式

    步骤一:Android XML文件

    ListActivity是一个全屏的list,如果我们需要定制layout,例如加上一个button之类的什么的,我们需将ListView 的id设置为“@android:id/list”,我们可以同getListView来获取ListView的对象,下面是XML的例子:

    .... 
    <LinearLayout ...> <!-- 在这里我曾忘了设定android:orientation="vertical" ,结果无法显示第二个widget,查了我很久--> 
    ...<Button … />  <--在这个例子中,我们在加入了一个Button,因此采用定制Layout的方式,即设置@android:id/list  --> 
        <ListView android:id="@android:id/list "  
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:drawSelectorOnTop="false" /> 
    </LinearLayout>

    步骤二:源代码

    1)使用String数组设置List的item内容

    例如:String[] items={"One", "Two", "Three", "Four", "Five"};

    2)在onCreate中将item的内容加入,使用setListAdapter并设置List的格式

    setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items));

    ArrayAdapter有三个参数,第一是对象,第二是List的格式,第三个是List的内容。对于格式这个例子采用了Android自定义的 几种格式,后面会具体列出。android.R.layout.simple_list_item_1是TextView的方式,采用big font,是最为常见的方式。

    3)点击List的Callback方法

    由于集成了ListActivity,可以直接使用回调函数onListItemClick

    4)例子

    public class BeginingBook extends ListActivity { 
        String[] items={"One","Two","Three","Four","Five","Six","Serven"}; 
        private Button button; 
         
        @Override
     
        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main);

            setListAdapter(new ArrayAdapter<String>( this , android.R.layout.simple_list_item_1, items )); 
            button =(Button)findViewById(R.id.chapter7); 
        
        public void onListItemClick (ListView parent,View v, int position, long id){ 
            button.setText(items[position]); //position是点击的item的序号,从0开始。 
        
    }

    5)不同的呈现模式

    我们修改ArrayAdapter的第二个显示的模式。另外可以通过getListView()获取ListView的对象,设置ListView 的一些属性,ListView的一些常用方法:setChoiceMode(),getCheckedItemPositions() 。

    setListAdapter (new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice ,items)); 
    getListView().setChoiceMode (ListView.CHOICE_MODE_SINGLE); //表明有选项,如果不设置,缺省为none,即我们点击后仍无反应

    setListAdapter (new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice ,items)); 
    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); //注意,只要点击就会触发Callback,而不过是的点击后选上还是变为取消。

    setListAdapter (new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked ,items)); 
    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

    下面,第一个图为android.R.layout.simple_list_item_1,接着依次为上面三种格式。

    csdn

    List例子二:自定义的List格式(来自Tutorial)

    步骤一:建立一个描述list item格式的XML文件

    <?xml version="1.0" encoding="utf-8"?> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
               android:id="@+id/rowtv1"  
               android:layout_width="fill_parent"  
               android:layout_height="wrap_content"  
               android:padding="10dip"  
               android:textSize="16dip">  
    </TextView>

    步骤二:通过XML定义item

    在第一个例子中,我们使用String[]来定制item。但是之前,我们也学习到,为了适合多种语言,最要这些信息都在XML文件中定义,只需更换XML文件,就可以适配不同的语言。我们在string.xml文件中增加相关的定义:

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        … … 
        <string-array name ="countries_arry"> 
            <item> Bharain </item> 
            <item> Bangladesh </item> 
            <item>Barbados </item> 
            <item>Belarus </item> 
            <item>Belgium </item> 
            <item>Belize </item> 
            <item>Benin </item> 
       </string-array> 
    </resources>

    步骤三:源代码

    public class Chapter7Test2 extends ListActivity {

        public void onCreate (Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
           String[] contries=getResources().getStringArray(R.array.countries_arry); 
            setListAdapter(new ArrayAdapter<String>(this, R.layout.chapter_7_test2_list, contries)); 
            ListView lv=getListView (); 
            lv.setTextFilterEnabled(true); 
            lv.setOnItemClickListener (new OnItemClickListener(){ 
                public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
                    //Toast.makeText(Chapter7Test2.this, ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 
                    Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 
                
            });

        
    }

    Toast

      上面给出Toast的例子。Toast.makeText(对象,文本内容,格式).show()。

  • 相关阅读:
    Django---分页器
    Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则
    python web框架简介Bottle Flask Tornado
    [C#] 谈谈异步编程async await
    MYSQL分库分表总结
    win10 IIS 10.0 无法安装 URL Rewrite Module 重写模块
    Quartz.NET文档 入门教程
    SignalR web实时同步 消息推送 广播
    C#模拟http 发送post或get请求
  • 原文地址:https://www.cnblogs.com/zhwl/p/2606450.html
Copyright © 2020-2023  润新知