我有:
TextView
内有numberView
。showNumbersItem
如果选中isVisible
,我想将numberView
的{{1}}属性设置为true
,如果没有,则设置为showNumbersItem
。
目前,我已经有了这段代码:
false
1。如何在填充列表之前将@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.item_view, parent, false);
}
TextView numberView = (TextView) itemView.findViewById(R.id.numberView);
numberView.setText("+33601234567");
numberView.setEnabled(showNumbers); //showNumbers is a boolean
return itemView;
}
布尔设置为showNumbers
?
我尝试使用此代码......:
showNumbersItem.isChecked
...但Android Studio说:@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
showNumbers = menu.findItem(R.id.show_numbers).isChecked();
}
2。如何为列表视图中的每个项目设置"Unreachable statement"
isVisible
属性?
目前,我有这段代码:
numberView
答案 0 :(得分:1)
#1:
选中默认值后,您只需使用showNumbers
,true
showNumbers = true;
布尔值
#2:
更改视图可见性:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
.....
if(showNumbers){
numberView.setVisibility(View.VISIBLE);
}else{
numberView.setVisibility(View.INVISIBLE);
}
....
return itemView;
}
通知您的列表适配器:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case (R.id.show_numbers):
item.setChecked(!item.isChecked());
showNumbers = item.isChecked();
yourAdapter.notifyDatasetChanged();
break;
}
return super.onOptionsItemSelected(item);
}
答案 1 :(得分:1)
首先,您需要将showNumbers变量传递给适配器,并且需要在getView()中添加代码以使View不可见。您可能希望将Visibility设置为GONE。如果未显示,则不可见为View事件留出空间。
if(showNumbers)
numberView.setVisibility(View.VISIBLE);
else
numberView.setVisibility(View.INVISIBILE);
// or numberView.setVisibility(View.GONE);
然后我认为您与onPrepareOptionMenus()没有任何关系。它告诉您代码无法访问,因为您在代码之前有一个return语句。如果有必要,你应该这样做:
showNumbers = menu.findItem(R.id.show_numbers).isChecked();
return super.onPrepareOptionsMenu(menu);
最后在onOptionItemSelected()中,您应该更改适配器中的布尔值并调用notifyDatasetChanged():
case (R.id.show_numbers):
item.setChecked(!item.isChecked());
showNumbers = item.isChecked();
yourAdapter.setShowNumbers(showNumbers );
yourAdapter.notifyDatasetChanged();
break;
您可能需要在适配器类中添加showNumbers的setter。