android可编辑下拉列表,使用Spinner Android的可编辑文本视图

您可以构建自己的视图:

public class ServerPreference extends DialogPreference {

private String value;

private EditText editText;

private Spinner spinner;

private final int server_list_id;

ArrayList servers;

public ServerPreference(Context context, AttributeSet attrs) {

super(context, attrs);

setPersistent(false);

setDialogLayoutResource(R.layout.server_preference_layout);

servers = new ArrayList();

Resources r = context.getResources();

if (MySettings.KEY_ASR_SERVER_HOST.equals(getKey())) {

server_list_id = R.array.asrServers;

} else if (MySettings.KEY_LOG_SERVER_HOST.equals(getKey())) {

server_list_id = R.array.logServers;

} else {

server_list_id = R.array.servicesServers;

}

Collections.addAll(servers, r.getStringArray(server_list_id));

}

@Override

protected void onBindDialogView(View view) {

editText = (EditText)view.findViewById(R.id.server_preference_text);

spinner = (Spinner)view.findViewById(R.id.server_preference_spinner);

SharedPreferences pref = getSharedPreferences();

value = pref.getString(getKey(), "");

editText.setText(value);

ArrayAdapter adapter = ArrayAdapter.createFromResource(

view.getContext(), server_list_id, android.R.layout.simple_spinner_item );

adapter.setDropDownViewResource( android.R.layout.simple_dropdown_item_1line );

spinner.setAdapter( adapter );

updateSpinner();

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

public void onItemSelected(AdapterView> parent, View view, int position, long id) {

if ( position != 0 ) {

value = servers.get(position);

editText.setText(value);

}

}

public void onNothingSelected(AdapterView> arg0) {

}

});

editText.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence s, int start, int before, int count) {

updateSpinner();

}

public void beforeTextChanged(CharSequence s, int start, int count,

int after) {

}

public void afterTextChanged(Editable s) {

}

});

super.onBindDialogView(view);

}

void updateSpinner() {

value = editText.getText().toString();

int index = servers.indexOf(value);

if ( index == -1 )

index = 0;

spinner.setSelection(index);

}

@Override

protected void onDialogClosed(boolean positiveResult) {

if ( positiveResult ) {

SharedPreferences.Editor editor = getEditor();

editor.putString(getKey(),value);

editor.commit();

}

super.onDialogClosed(positiveResult);

}

public String getValue() {

return value;

}

void setValue(String value) {

this.value = value;

}

}

自定义视图的布局:

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

当您要使用此视图时,只需在XML文件中定义:

android:title="ASR/VVS Server"

android:persistent="true"

android:positiveButtonText="OK"

android:dialogTitle="ASR/VVS Server"

android:key="SERVER_NAME"

android:negativeButtonText="Cancel"

android:entryValues="@array/asrServers"

android:entries="@array/asrServers"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值