簡體   English   中英

無法讓onClick用於listView-Android

[英]Can't get onClick working for listView - Android

我無法使我的listView可點擊。 我遵循了一些示例,並嘗試在具有歷史意義的SO頁面上提出建議,但沒有得到建議。

到目前為止,我有這段代碼可以填滿我的listView。 它還包含我嘗試使它可單擊的代碼。

helper = new TaskDBHelper(Overview.this);
    SQLiteDatabase sqlDB = helper.getReadableDatabase();
    Cursor cursor = sqlDB.query(TaskContract.TABLE,
            new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK, TaskContract.Columns.BAL, TaskContract.Columns.IP, TaskContract.Columns.STATUS, TaskContract.Columns.CNTRY, TaskContract.Columns.VS},
            null, null, null, null, null);

    listAdapter = new SimpleCursorAdapter(
            this,
            R.layout.sum_view,
            cursor,
            new String[]{TaskContract.Columns.TASK, TaskContract.Columns.BAL, TaskContract.Columns.IP, TaskContract.Columns.STATUS, TaskContract.Columns.CNTRY, TaskContract.Columns.VS},
            new int[]{R.id.taskTextView, R.id.txtData, R.id.txtIP, R.id.txtStatus, R.id.txtCounty, R.id.imgStatus},
            0
    );


    ListView nList = this.getListView();
    nList.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                                   int arg2, long arg3) {
            Log.d("***CLICK***","YES");

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            Log.d("***CLICK***","NOTHING SELECTED");
        }
    });


    this.setListAdapter(listAdapter);

感謝您的建議。 我改成了這個

    helper = new TaskDBHelper(Overview.this);
    SQLiteDatabase sqlDB = helper.getReadableDatabase();
    Cursor cursor = sqlDB.query(TaskContract.TABLE,
            new String[]{TaskContract.Columns._ID, TaskContract.Columns.TASK, TaskContract.Columns.BAL, TaskContract.Columns.IP, TaskContract.Columns.STATUS, TaskContract.Columns.CNTRY, TaskContract.Columns.VS},
            null, null, null, null, null);

    listAdapter = new SimpleCursorAdapter(
            this,
            R.layout.sum_view,
            cursor,
            new String[]{TaskContract.Columns.TASK, TaskContract.Columns.BAL, TaskContract.Columns.IP, TaskContract.Columns.STATUS, TaskContract.Columns.CNTRY, TaskContract.Columns.VS},
            new int[]{R.id.taskTextView, R.id.txtData, R.id.txtIP, R.id.txtStatus, R.id.txtCounty, R.id.imgStatus},
            0
    );


    ListView nList = this.getListView();
    nList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent,
                                View view,int position, long id) {
            Log.d("***CLICK***","YES");
        }
    });


    this.setListAdapter(listAdapter);

但是通過按列表查看項根本沒有任何日志文件。

另外,我的listView由一個重復的一行組成的單獨的布局文件組成。

您應該使用setOnItemClickListener setOnItemSelectedListener用於選擇多個項目。

嘗試這個:

nList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
                            int position1, long id) {
 Log.d("***CLICK***","YES");
 }
});

使用ListView.OnItemClickListener而不是ListView.setOnItemSelectedListener來獲取ListView行上的點擊事件:

    nList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, 
                                           View view,int position, long id) {
                // called when listview row selected
          }
     });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM