我試圖在Android中製作一個ListView
,其中一些項目具有細節,一些項目沒有。對於那些具有細節的項目,我希望它們可點擊並點擊它們以呈現新的片段。對於那些有沒有細節的項目,我想隱藏ImageView
並將列表項設置爲「不可點擊」。Android:List Item選擇性「clickability」
我試圖做到這一點通過以下方式(這是我的@Override getView
方法在我ArrayAdapter
類):
ParseGeoPoint location = itemScan.getParseGeoPoint("location");
ImageView chevron = (ImageView)convertView.findViewById(R.id.chevron_image_view);
if (location == null) {
subtitleLabel.setText("{Location Data Unavailable}");
chevron.setVisibility(View.GONE);
convertView.setClickable(false);
} else {
subtitleLabel.setText(""); <-- Not important
chevron.setVisibility(View.VISIBLE);
convertView.setClickable(true);
}
這裏是我的列表視圖對項目點擊收聽:
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// This may be unnecessary when I get this
// issue solved, but I put this in because
// of the odd behavior described below
if (view.isClickable() == true) {
// Push to a new fragment
}
}
});
此代碼的一部分按預期工作,部分代碼不按預期工作。列表視圖項目的標籤已正確填充。列表視圖項目按預期顯示或隱藏「披露人字形」。
奇怪的是,意見的點擊能力似乎與我的預期相反。 「好」項目(具有細節的項目)不以任何方式響應點擊/點擊。 「壞」項目(沒有細節的項目)會播放聲音「點擊」聲音,但我的OnItemClickListener()
中的if
聲明可防止代碼被觸發。所以,我的列表視圖呈現無效。
我是否誤解了setClickable(boolean)
的預期功能?我從this answer得到了這個想法。
確定。這是有道理的,但理想情況下,我想避免那些不會推送到新片段的項目的「點擊」聲音。想法? – mbm29414 2015-03-30 22:32:08