2014-06-20 3 views
-1

Android 프로그래밍을 처음 사용합니다. 내 질문은 내가 8 목록의 목록 (ListView)있다. 이 중 하나를 클릭하면 메뉴와 레스토랑 세부 정보가 포함 된 새 페이지 (활동)가 시작됩니다. 나는 8 가지 활동을 수행하는 것이 낭비 적이라는 것을 이해하며, 아마도 일반적인 레스토랑 세부 활동을 갖게 될 것입니다.일반화 된 Android 활동

이제 효율적인 방법으로이 정보를 표시하는 방법을 알아 냈습니다. 지금까지 이것을 구현하여 선택한 레스토랑에 따라 다른 활동으로 메시지를 보낼 수있었습니다. 하지만 내가 어떻게 정보의 큰 덩어리를 보낼 수 있습니다

---- MainActivity.java ------

String [] restaurants = {"abc","def"....}; 
int POSITION_ACT;   

list.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id){ 
      POSITION_ACT=position; 
      customActivity(view); 
      } 
    }); 

public void customActivity(View view) { 

    Intent intent = new Intent(this, RestaurantDetails.class); 
    intent.putExtra(MESSAGE, "You clicked this restaurant: " + restaurants[POSITION_ACT]); 

    startActivity(intent); 
} 

--generalrestaurant.java ----

Intent intent = getIntent(); 
    String msg = intent.getStringExtra(foodActivity.MESSAGE); 
    TextView tt1 = (TextView) findViewById(R.id.tt1); 

    tt1.setText(msg); 
+1

필요한 관련 정보 (직렬화)을 모두 가진 객체해야 information' – njzk2

+1

레스토랑의'큰 덩어리를 정의합니다. 그것을 의도를 통해 전달하십시오. – jacobhyphenated

답변

0

많은 정보를 전달해서는 안됩니다. 모델 정보는 Restaurant 클래스의 인스턴스에 있어야합니다. 그런 다음 ArrayList에있는 모든 인스턴스를 싱글 톤으로 유지할 수 있습니다. Restaurant 인스턴스를 반환하는 싱글 톤에 대한 getter를 작성한 후 추가 한 것을 사용하여 RestaurantDetails 액티비티에서 호출합니다 (어쩌면 이것을 UUID로 만들려고합니다). 마지막으로 액티비티가 종료되면 싱글 톤의 Restaurant 데이터를 원시 XML 파일이나 다른 것으로 저장하고 다시 시작할 때 다시 읽어야합니다.

+0

제안 된 다른 것들처럼 직렬화 가능한 객체로 전달하면 좋겠지 만 MVC 디자인 패턴을 고수하기 때문에 제안 된 방법을 사용하고 싶습니다. – Ben

0

음식점 정보로 POJO을 만들고 이름, 위치, 1 인당 비용, 정격 등의 데이터를 작성할 수 있습니다. 그런 다음 POJO는 Serializable 또는 Parcelable을 구현해야합니다. 귀하의 의도에서 intent.putExtra(String, Serializable) 또는 intent.putExtra(String, Parcelable)을 사용하여 POJO를 전달할 수 있습니다. 두 번째 활동에서 개체를 가져와 활동에 데이터를 표시 할 수 있습니다. 아래 링크에서보세요 :

http://developer.android.com/reference/java/io/Serializable.html

http://developer.android.com/reference/android/os/Parcelable.html