android listView 顯示數據 單擊 長按

參考: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)某項的響應*/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章