2011-11-03 94 views
1

新增到機器人編程。即時通訊有一個小問題,我肯定只是固定的,但我做了一些搜索和一堆教程,但似乎無法找到我所需要的,所以我想通過ID問。我的應用程序有2個活動,第一個活動只是一個簡單的形式,用戶輸入課程信息(課程名稱,教授等) 第一個活動傳遞應該存儲在第二個活動列表中的數據。問題是隻有第一次課程存儲在列表中,在第一次沒有新增加到第二個活動之後。請有人指點我正確的方向嗎?在此先感謝android - 將數據從一個活動傳遞到第二個活動中的列表

第一個活動

public class CourseDetail extends Activity { 

//Course c = new Course(); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Button save=(Button)findViewById(R.id.save); 
    save.setOnClickListener(onSave); 
} 

private View.OnClickListener onSave=new View.OnClickListener() { 

    public void onClick(View v) { 
     EditText course=(EditText)findViewById(R.id.course); 
     EditText professor=(EditText)findViewById(R.id.professor); 
     EditText location=(EditText)findViewById(R.id.location); 
     EditText officehrs=(EditText)findViewById(R.id.officehrs); 

     Intent i=new Intent(CourseDetail.this, CourseList.class); 
     i.putExtra("myCourse", course.getText().toString()); 
     i.putExtra("myProfessor", professor.getText().toString()); 
     i.putExtra("myLocation", location.getText().toString()); 
     i.putExtra("myOfficehrs", officehrs.getText().toString()); 
     startActivity(i); 
    } 
}; 
} 

次活動

public class CourseList extends Activity { 
Button btnCourse; 
List<Course> model = new ArrayList<Course>(); 
CourseAdapter adapter=null; 
private String dCourse=""; 
private String dProfessor=""; 
private String dLocation=""; 
private String dOfficehrs=""; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.clist); 
    ListView list =(ListView)findViewById(R.id.courses); 
    adapter=new CourseAdapter(); 
    list.setAdapter(adapter); 

    Course c = new Course();   
    Bundle extras = getIntent().getExtras(); 
    dCourse = extras !=null ? extras.getString("myCourse") :"no value entered"; 
    dProfessor = extras !=null ? extras.getString("myProfessor") :"no value entered"; 
    dLocation = extras !=null ? extras.getString("myLocation") :"no value entered"; 
    dOfficehrs = extras !=null ? extras.getString("myOfficehrs") :"no value entered"; 

    c.setCourse(dCourse); 
    c.setProfessor(dProfessor); 
    c.setLocation(dLocation); 
    c.setOfficeHrs(dOfficehrs); 


    btnCourse =(Button)findViewById(R.id.btnCourse); 
    btnCourse.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      finish(); 
     } 
    }); 

} 
+0

你是怎麼知道只有第一個課程才得救的? –

+0

運行的Droid模擬器和使用該應用程序其明顯非常快 – user1027044

回答

0

是您不添加新添加項目到List.So設置適配器之前,你必須添加的問題,所有的對象如

list.add(c); 
+0

試圖解決它時,我正在移動「adapter.add(C)」周圍,並且一定沒有意識到我沒有把它寄回來之前發佈我的代碼,但我確實有行,沒有該行沒有課程被添加,與它,仍然是一個,但即時通訊嘗試其他答案仍然 – user1027044

0

您只是在CourseDetail中獲取用戶輸入的值活動並在CourseList活動內顯示收到的值,這意味着您不會永久存儲這些值。

通過這個Android - Data Storage文件。

當您移動到第二個活動即CourseList活動時,此時從SQLite表中獲取數據並顯示相同的數據。每當你從以前的活動新的價值,當時正好在ArrayList中添加新的數據更新列表,並就adapter.notifyDataSetChanged()

0

一些建議的電話:

  • 有你CourseList延長ListActivity代替只是Activity - 請查看一些教程,以幫助您正確設置。
  • 對於你如何處理你的名單似乎有點混淆 - 你有你的model變量,但似乎沒有做任何事情。再次,看看ListView教程(只是谷歌「android listview教程」)。
  • 您似乎已經發現可以使用「意圖」將信息從一個活動傳遞到另一個活動,但由於您只在onCreate()方法中執行此操作,因此只會發生一次。嘗試在您的ListActivity的適配器上爲每個項目執行一次此操作。

不要放棄,在Android上繼續努力:-)

0

一些建議:

  1. 你有你的對象添加到適配器:adapter.add(c);你得到的數據之後。

  2. 致電adapter.notifyDataSetChanged()通知系統您的listView數據已更改。致電​​刷新它。

  3. 我注意到你用finish()方法設置按鈕。嗯,如果你這樣做,下一次你從CourseDetail的CourseList活動,適配器將再次爲空。以前沒有收到任何數據。這是你真正想要的嗎?

相關問題