android listView 显示数据 单击 长按

来源:互联网 发布:大唐陌刀 知乎 编辑:程序博客网 时间:2024/05/16 02:52

参考:http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html

一、最简单的listView--ArrayAdapter

1、ArrayAdapter(Context context, int textViewResourceId, List<T> objects)

textViewResourceId:布局文件,可以是系统自带;

objects:泛型对象。

2、补充,ArrayList即动态数组,

例:

ArrayLIst List = new ArrayList();

for(int i=0;i<10;i++) List.add(i);

List.RemoveAt(5);

3、补充:为什么要用List list = new ArrayList();不用ArrayList list = ArrayList();

问题就在于List有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如 LinkedList或者Vector等等,这时你只要改变这一行就行了:
List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。
假设你开始用 ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了 ArrayList特有的方法和属性。

http://www.cnblogs.com/aisiteru/articles/1151874.html

4、补充:泛型,类比c++模板 ,如list&lt;string>

5、补充:类Activity中的setContentView(),android开发中如果想实现布局页面的跳转可以使用setContentView()设置跳转到需要的布局文件上面。

6、补充,

eclipse 编码时 代码上的横线

今天再使用Eclipse编码时,发现有些变量或类名上有些莫名其妙的横线,如下图所示:

现在才知道这些横线的意思:这些横线标示出来的类或方法,说明是旧版本中的,当前版本不建议使用。

二、一般用于数据库SimpleCursorAdapter

public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)

后面两个参数,一个包含数据库的列的String型数组,一个包含布局文件中对应组件id的int型数组。其作用是自动的将String型数组所表示的每一列数据映射到布局文件对应id的组件上。

/**刷新listView*/
    private void refreshLV()
    {
        DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this ,null ,null ,1);//创建数据库
        dbHelper.getReadableDatabase();
        myCursor = dbHelper.getCursor();
        SimpleCursorAdapter myAdapter=new SimpleCursorAdapter
                (
                    MainActivity.this,
                    R.layout.main_vlist,
                    myCursor,
                    new String[]{DatabaseHelper.FIELD_ID,DatabaseHelper.FIELD_EVENT_NAME,DatabaseHelper.FIELD_REMIND_TIME},
                    new int[]{R.id.eventIdTV,R.id.eventNameTV,R.id.remindTimeTV} //该参数所代表的控件在第二个参数所代表的布局文件中定义
                );
        displayLV.setAdapter(myAdapter);
        dbHelper.close();
    }
    /**刷新listView*/

 

三、单击ListView的某项

myListView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub
                myCursor.moveToPosition(arg2);
                _id = myCursor.getInt(0);
                myEditText.setText(myCursor.getString(1));
            }
        });

四、长按(长按弹出AlertDialog)

private ListView displayLV;

displayLV.setOnItemLongClickListener(new OnItemLongClickListener()
        {
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3)//arg2点击的item对应表中的_id,arg3被点击的行号
            {
                // TODO Auto-generated method stub
                DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this ,null ,null ,1);//创建数据库
                dbHelper.getReadableDatabase();
                myCursor = dbHelper.getCursor();
                myCursor.moveToPosition(arg2);//移到数据库的第arg2行
                final int deleteId = myCursor.getInt(0);//第0列第2行对应的id
                dbHelper.close();
                new AlertDialog.Builder(MainActivity.this)
                .setTitle("删除提醒")
                .setMessage
                (
                    "确定删除" +
                    "<" +
                    myCursor.getString(myCursor.getColumnIndex(DatabaseHelper.FIELD_EVENT_NAME)) +
                    ">?"
                )
                .setPositiveButton
                (
                    "确定",
                    new DialogInterface.OnClickListener()
                    {
                        public void onClick(DialogInterface dialog,int which)
                        {
                            //结合myCursor.moveToPosition(arg2),myCursor.getInt(0)表示获取arg2行第0列对应的数据(该数据以整型返回,实际就是_id)
                            DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this ,null ,null ,1);//创建数据库
                            dbHelper.delete(deleteId);
                            dbHelper.close();
                            refreshLV();
                        }
                    }
                )
                .setNegativeButton
                (
                    "取消",
                    new DialogInterface.OnClickListener()
                    {
                        public void onClick(DialogInterface dialog,int which) {    }
                    }
                )
                .show();
                return true;
            }
        });
        /**长按displayLV(listView)某项的响应*/

原创粉丝点击