[英]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.