非常基本的问题:
我正在尝试动态启用/禁用FooterView
的{{1}}。
基本上我想在ListView
获取新位置后立即通过setEnable(true/false)
功能点击它。我正在考虑从LocationListener
方法中调用的公共方法,但没有返回,但它必须更改LocationListener.onLocationChange()
首选项,但我无法弄清楚如何编写它,如果它可以工作。有什么建议吗?
on onCreate:
FooterView
LocationListener方法
@Override
protected void onCreate(Bundle bundle) {
LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TextView footerView = (TextView)inflater.inflate(R.layout.footer_view, null);
myListView.addFooterView(footerView);
//if (!enabler) footerView.setEnabled(false);
//else footerView.setEnabled(true);
footerView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {}
});
}
因此,即使监听器找到一个新位置,它也不会触发启用footerView的if条件(我在其中注释掉了代码)。 我试图从没有快乐的方法访问footerView.setEnable。非常感谢任何帮助。
答案 0 :(得分:0)
为什么您的解决方案不起作用是因为onCreate()
仅在创建Activity
时被调用一次。
尝试以下方法:
class YourActivity extends Activity implements LocationListener {
private TextView footerView;
@Override
protected void onCreate(Bundle bundle) {
LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
footerView = (TextView)inflater.inflate(R.layout.footer_view, null);
myListView.addFooterView(footerView);
footerView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {}
});
}
@Override
public void onLocationChanged(Location currentLocation) {
if (null == mLastLocationReading || mLastLocationReading.getTime() > currentLocation.getTime()){
mLastLocationReading = currentLocation;
enableFooterView(true);
}
if (currentLocation.getTime() > mLastLocationReading.getTime())
mLocationManager.removeUpdates(this);
}
private void enableFooterView(boolean enable) {
footerView.setEnabled(enable);
}
}