2011-11-03 37 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活动,适配器将再次为空。以前没有收到任何数据。这是你真正想要的吗?

相关问题