0

ボタン (setButton) があり、ボタンを押すとすぐに、変更した AutoCompleteTextView にドロップダウン メニューを表示させたい

私は2つのクラスを持っています

AutoCompleteTextViewTest1Activity.class

package com.autocompletetextviewtest1;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;


public class AutoCompleteTextViewTest1Activity extends Activity {
ArrayAdapter<String> adapter1;
ArrayAdapter<String> adapter2;
private InstantAutoComplete actv;
private String[] countries2 ={"Taiwan", "China", "S. Korea", "USA", "Japan", "Russia"};
private String[] countries={};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countries);
adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countries2);
actv = (InstantAutoComplete)findViewById(R.id.actv);
actv.setAdapter(adapter1);

Button setButton = (Button)findViewById(R.id.setButton);
Button clearButton = (Button)findViewById(R.id.clearButton);

setButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
actv.setAdapter(adapter2);
actv.requestFocus();
}
});

clearButton.setOnClickListener(new OnClickListener(){
public void onClick(View v){
actv.setAdapter(adapter1);
        }
});
}
}

InstantAutoComplete.class

package com.autocompletetextviewtest1;

import android.content.Context;   
import android.graphics.Rect; 
import android.util.AttributeSet; 
import android.widget.AutoCompleteTextView; 

public class InstantAutoComplete extends AutoCompleteTextView { 

public InstantAutoComplete(Context context) { 
super(context); 
} 

public InstantAutoComplete(Context arg0, AttributeSet arg1) { 
super(arg0, arg1); 
} 

public InstantAutoComplete(Context arg0, AttributeSet arg1, int arg2) { 
super(arg0, arg1, arg2); 
} 

@Override 
public boolean enoughToFilter() { 
return true; 
} 

@Override 
protected void onFocusChanged(boolean focused, int direction, 
Rect previouslyFocusedRect) { 
super.onFocusChanged(focused, direction, previouslyFocusedRect); 
if (focused) { 
performFiltering(getText(), 0); 
showDropDown(); 

} 
} 

} 

しかし、私の AutoCompleteTextView には、setButton を押したときにドロップダウン メニューが表示されません。私に何ができる?ありがとう!

4

2 に答える 2

0

setButton onClick 内で actv.invalidate() を呼び出して、新しく更新されたアダプターでビューを更新してみてください。

于 2012-07-18T16:16:11.497 に答える