2012-11-30 126 views
5

更新后,我有两个简单的活动 - 活动1:ListView控件从数组 活性2:在活动1刷新的ListView在另一个活动

当我编辑活性2到活动1的值,并返回编辑单击列的EditText, ListView不会重新加载新值。

我想刷新ListView时,我从Activity2返回或恢复Activity1或将更新列表的东西。

我的代码:

static ArrayAdapter<String> dataAdapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
      // Loading the values to list array 
     String[][] fulllist = loadArrays(); 
     String[] list = new String[fulllist.length]; 
     for(int i = 0; i<fulllist.length; i++) { 
      list[i] = fulllist[i][1]; 
      } 
      // -------------------------------- 

      dataAdapter = new ArrayAdapter<String>(this, 
           android.R.layout.simple_list_item_1, 
           list); 
      setListAdapter(dataAdapter); 
      } 
@Override 
public void onResume() { 
     super.onResume(); 
     // Loading the values to list array 
     String[][] fulllist = loadArrays(); 
     String[] list = new String[fulllist.length]; 
     for(int i = 0; i<fulllist.length; i++) { 
      list[i] = fulllist[i][1]; 
      } 
     // -------------------------------- 

     dataAdapter = new ArrayAdapter<String>(this, 
          android.R.layout.simple_list_item_1, 
          list); 
     dataAdapter.notifyDataSetChanged(); 
} 

loadArrays()是转换从SharedPreferences到字符串数组只是方法。 Activity2将新数据保存在SharedPreferences中,并且Activity1可以读取它(使用新数据)。 如果我返回到“主要活动”(它不是Activity1)并且返回到Activity1 - 显示新数据,但是我希望当我立即从Activity2返回时更新此数据。

loadArrays()方法:pastebin.com/MHwNC0jK

请多关照!

+0

代码loadArrays()将有助于更好地理解 – Shakti

回答

10

在点击您的第一个活动项目,与startActivityForResult()

开始你的第二个活动

然后在第二次活动中,进入EditText之后,可能会出现一个按钮。而在该按钮呼叫onClick

intent.putExtra("edittextvalue", findViewById(R.id.edittext).getText().toString()); 
setResult(RESULT_OK, intent); 
finish(); 

现在你回到你的第一个活动,在这里你必须实现onActivityResult()回调。您可以从该意图的额外数据中提取数据,并在阵列中设置相应的项目并呼叫notifyDataSetChanged()

这是您应该如何做的理想选择。

如果你想如何使用startActivityForResult()尝试此链接的详细信息 - http://manisivapuram.blogspot.in/2011/06/how-to-use-startactivityforresult.html

+0

这会给我一点不同的数据和结果不是我想要的,但我会检查它。 – Dennis

+2

非常感谢!这工作! – Dennis

-3

将完整列表声明为全局变量并使用静态数组列表。

1

1)获取参考的ListView

mListView = (ListView)findViewById(R.id.auto_listview); 

2)创建适配器一个更多的时间与改变的值

MyAdapter myAdapter = new MyAdapter(getApplicationContext(), 
            R.layout.locations_list_item_layout,dataArray; 
mListView.setAdapter(myAdapter); 

setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

       public void onItemSelected(AdapterView<?> adapterView, 
         View view, int i, long l) { 

myAdapter = new MyAdapter(getApplicationContext(), 
    //pass changed values vlues array        R.layout.locations_list_item_layout,dataArray; 
mListView.setAdapter(myAdapter); 

} 

       public void onNothingSelected(AdapterView<?> arg0) { 
        // TODO Auto-generated method stub 

       } 
      }); 
相关问题