0

我想要一些方向。我对它的了解不是很清楚。所以,请...

  1. 这是我的 xml 格式的编辑文本:

     <EditText 
        android:id="@+id/editTextName"
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:layout_margin="3dp" 
        android:hint="Insert Name"  
        android:onClick="surNameEditTextClick" />
    
  2. 获取编辑文本的输入字符串的代码:

    EditText nameText = (EditText) findViewById(R.id.editTextName);
    String name = nameText.getText().toString();
    
  3. 将名称字符串保存到字符串的数组列表中:

    ArrayList<String> nameArrayList = new ArrayList<String> ; //created globally 
    if(!(nameArrayList.contains(name))){
    
        //Adding input string into the name array-list
        nameArrayList.add(name) ;
    }
    
  4. 将此数组列表放入共享首选项中:

    SharedPreferences saveGlobalVariables = getSharedPreferences(APP_NAME, 0);
    SharedPreferences.Editor editor = saveGlobalVariables.edit();
    editor.putStringSet("name", new HashSet<String>(surNameArrayList));
    editor.commit();
    
  5. 程序加载时(在 onCreate() 中)将所有 Shared-Preferences 数据返回到数组列表:

    SharedPreferences loadGlobalVariables = getSharedPreferences(APP_NAME, 0);
    nameArrayList = new ArrayList<String>(loadGlobalVariables.getStringSet("name", new HashSet<String>()));
    

现在如何在该编辑文本下以某种视图形式获取这些数据。我见过不同的方法,但没有清楚地理解。如果我使用

EditText mNameEditText;
mNameEditText = (EditText)findViewById(R.id.editTextName);
mNameEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s){

}

public void beforeTextChanged(CharSequence s, int start, int count, int after){

}

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

}

});

那么这里将使用什么代码片段呢?应该使用哪个 textView 或 list-view 以及在哪里使用???我无法理解。如果有其他方法可用,请在此处提供。问候,

4

1 回答 1

1

你是那里的大部分。我建议使用AutoCompleteTextView并将您的列表绑定到 ArrayAdapter。(AutoCompleteTextView 已经具有帮助用户在相似条目之间进行选择的下拉功能,并且不需要 TextWatcher。)

文档中的代码:

 public class CountriesActivity extends Activity {
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         setContentView(R.layout.countries);

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                 android.R.layout.simple_dropdown_item_1line, COUNTRIES);
         AutoCompleteTextView textView = (AutoCompleteTextView)
                 findViewById(R.id.countries_list);
         textView.setAdapter(adapter);
     }

     private static final String[] COUNTRIES = new String[] {
         "Belgium", "France", "Italy", "Germany", "Spain"
     };
 }

(您可以以与上述原始 Array 相同的方式使用 ArrayList。)

于 2013-02-16T15:51:14.387 回答