Android,setstring to listview

时间:2015-02-16 21:28:11

标签: java android listview

我有以下代码将名为savedlist的变量列表保存到sharedprefs。我一直在尝试保存值(应该是URL列表)以在ListView(lv)中显示。

public class saveSearch extends Activity {

    private String urlString = "www.google.com";
    private String saveURL;
    private final static String PREFERENCE_FILENAME = "TestSave";
    private EditText savename;
    private ArrayList<String> savelist;
    private ArrayList savelist2;
    List<String> SavedSearches = new ArrayList<String>();
    private ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    String value = intent.getStringExtra("searchurl");
    urlString = value;
    setContentView(R.layout.save_search);
    final SharedPreferences.Editor editor = getSharedPreferences(PREFERENCE_FILENAME,0).edit();
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    savename = (EditText) findViewById(R.id.et_savename);
    lv = (ListView) findViewById(R.id.listView);
    // Get the current list.
    final Set<String> myStrings = prefs.getStringSet("savelist", new HashSet<String>());
    //Convert Your Set to List again
    final ArrayList<String> savelist = new ArrayList<String>(myStrings);
    // populate the listview
    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
            this,
            android.R.layout.simple_list_item_1,
            savelist);
    lv.setAdapter(arrayAdapter);
    final Button browsebutton = (Button) findViewById(R.id.button_Save);
    browsebutton.setOnClickListener(
      new View.OnClickListener() {
        public void onClick(View v) {
        // Perform action on click
        saveURL = (savename.getText() + " - " + urlString);
        // Add the new value.
        myStrings.add(saveURL);
        // Save the list. 
        editor.putStringSet("savelist", myStrings);
        editor.commit();
        arrayAdapter.notifyDataSetChanged();
        lv.setAdapter(arrayAdapter);
      }})

1 个答案:

答案 0 :(得分:0)

这里有一些问题。我们一个接一个地走吧:

  1. 由于您在开始时检查意图,我假设您使用正确填充的意图启动此活动。很难说,因为你似乎没有检查null无处。我们假设没关系。
  2. 下一项shared preferences您在此处使用不正确,请参阅this以获取很好的解释原因。 它应该有希望回答您的问题为什么这不起作用 - 您使用了两种不同的共享偏好。
  3. 其他一些想法(与您的问题不太相关,但也许它们可能对您有所帮助
    1. 你使用HashSet并将其转换回ArrayList的原因是什么?为什么不使用ArrayList开头?当然,除非您想要删除重复项,否则请确保。
    2. 最后一件事是onClick方法。调用 由于您已将其设置为onCreate,因此不需要lv.setAdapter(arrayAdapter);