如何动态修改FooterView的首选项?

时间:2015-07-11 18:15:13

标签: android android-listview textview

非常基本的问题: 我正在尝试动态启用/禁用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。非常感谢任何帮助。

1 个答案:

答案 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);
    }
}