Android之ListView的用法(ListActivity)——系列(7)

转载:http://skyfengfu.diandian.com/post/2012-10-09/40039413744


ListView是安卓部分中,很常用的一个控件,也是很灵活的一个空间,在软件的很多常用布局中都会用到,所以要熟练运用。

一、初级(简单的现实一个列,并对其点击事件做处理)

效果如下:

点击处理只是一个简单的吐司提示:

这个简单效果的实现有多种方式。

1、让activity继承ListActivity,并且舍弃XML布局文件,全部采用默认布局中存在的布局来布局(=、=)。

首先将继承的Activity改为ListActivity,删除掉

setContentView(R.layout.activity_main);这一句。

然后这个MainActivity本身就是一个ListActivity

public class MainActivity extends ListActivity {
                    
    private List<String> arrayData;
//  private List<Map<String, ?>> simpleData;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        arrayData = getData();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayData);
        setListAdapter(adapter);
    }
    private List<String> getData() {
        List<String> data = new ArrayList<String>();
        data.add("刘备");
        data.add("关羽");
        data.add("张飞");
        data.add("赵云");
        return data;
    }
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        Toast.makeText(this, arrayData.get(position), Toast.LENGTH_LONG).show();
    }

可以重写ListActivity的系列方法,如onListItemClick();等

2、依然让MainActivity继承Activity,不舍弃XML文件布局方法。

在main布局文件中可以只是简单的布局一个ListView控件,代码就不贴了

在java类中,代码以及注释如下:

public class MainActivity extends Activity {
     
    private List<String> arrayData;
//  private List<Map<String, ?>> simpleData;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        arrayData = getData();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayData);
        //继承自ListActivity的时候
//        setListAdapter(adapter);
        //采用布局文件来布局
        setContentView(R.layout.activity_main);
        ListView listview = (ListView) this.findViewById(R.id.listView);
        listview.setAdapter(adapter);
        listview.setOnItemClickListener(new OnItemClickListener() {
     
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long id) {
                Toast.makeText(getApplicationContext(), arrayData.get(position), Toast.LENGTH_LONG).show();
            }
        });
    }
    //如果是继承ListeActivity的话,可以通过重写一下方法来设置点击事件
//  @Override
//    protected void onListItemClick(ListView l, View v, int position, long id) {
//      // TODO Auto-generated method stub
//      super.onListItemClick(l, v, position, id);
//      Toast.makeText(this, arrayData.get(position), Toast.LENGTH_LONG).show();
//    }
    private List<String> getData() {
        List<String> data = new ArrayList<String>();
        data.add("刘备");
        data.add("关羽");
        data.add("张飞");
        data.add("赵云");
        return data;
    }
     
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
     
         
}

效果一样。


你可能感兴趣的:(Android之ListView的用法(ListActivity)——系列(7))