안드로이드 인텐트 질문드립니다.
조회수 995회
메인 액티비티 입니다.
ImageView likeButton;
TextView likeCountView;
ImageView hateButton;
TextView hateCountView;
CommentAdapter adapter;
Button allView;
ArrayList<CommentItems> items;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
likeButton = findViewById(R.id.likeButton);
likeCountView = findViewById(R.id.likeCountView);
hateButton = findViewById(R.id.hateButton);
hateCountView = findViewById(R.id.hateCountView);
TextView writeButton = findViewById(R.id.button_write);
allView = findViewById(R.id.button_allView);
ListView listView = findViewById(R.id.listView);
items = new ArrayList<CommentItems>();
items.add(new CommentItems("kim78**", 5, "적당히 재밌다. 오랜만에 잠 안오는 영화 봤네요.", R.drawable.user1));
items.add(new CommentItems("kim78**", 5, "적당히 재밌다. 오랜만에 잠 안오는 영화 봤네요.", R.drawable.user1));
items.add(new CommentItems("kim78**", 5, "적당히 재밌다. 오랜만에 잠 안오는 영화 봤네요.", R.drawable.user1));
items.add(new CommentItems("kim78**", 5, "적당히 재밌다. 오랜만에 잠 안오는 영화 봤네요.", R.drawable.user1));
items.add(new CommentItems("kim78**", 5, "적당히 재밌다. 오랜만에 잠 안오는 영화 봤네요.", R.drawable.user1));
items.add(new CommentItems("kim78**", 5, "적당히 재밌다. 오랜만에 잠 안오는 영화 봤네요.", R.drawable.user1));
items.add(new CommentItems("kim78**", 5, "적당히 재밌다. 오랜만에 잠 안오는 영화 봤네요.", R.drawable.user1));
adapter = new CommentAdapter(items);
listView.setAdapter(adapter);
//모두보기 버튼
allView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), AllCommentView.class);
intent.putExtra("items", items);
startActivity(intent);
}
});
//작성하기 버튼
writeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), CommentWriteView.class);
startActivityForResult(intent, 101);
}
});
}
class CommentAdapter extends BaseAdapter {
final ArrayList<CommentItems> items;
CommentAdapter(ArrayList<CommentItems> items) {
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CommentItemView view = new CommentItemView(getApplicationContext());
CommentItems item = items.get(position);
view.setComment(item.getComment());
view.setId(item.getId());
view.setProFileImage(item.redId);
view.setRatingBar(item.rating);
return view;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
String comment = data.getStringExtra("comment");
int rating = Math.round(data.getFloatExtra("rating", 0.0f));
if (comment != null) {
items.add(new CommentItems("kim78**", rating, comment, R.drawable.user1));
adapter.notifyDataSetChanged();
}
}
}
모두보기 액티비티입니다.
public class AllCommentView extends AppCompatActivity {
Intent intent;
ArrayList<CommentItems> items;
TextView allViewWriteButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_comment_view);
intent = getIntent();
items = (ArrayList<CommentItems>) intent.getSerializableExtra("items");
ListView allViewListView = findViewById(R.id.allview_listview);
CommentAdapter adapter = new CommentAdapter(items);
allViewListView.setAdapter(adapter);
allViewWriteButton = findViewById(R.id.allviewwrite_button);
allViewWriteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), CommentWriteView.class);
startActivity(intent);
finish();
}
});
}
class CommentAdapter extends BaseAdapter {
final ArrayList<CommentItems> items;
CommentAdapter(ArrayList<CommentItems> items) {
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CommentItemView view = new CommentItemView(getApplicationContext());
CommentItems item = items.get(position);
view.setComment(item.getComment());
view.setId(item.getId());
view.setProFileImage(item.redId);
view.setRatingBar(item.rating);
return view;
}
}
}
작성하기액티비티 입니다.
public class CommentWriteView extends AppCompatActivity {
EditText commentText;
RatingBar ratingBar;
Button saveButton;
String comment;
float rating;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_comment_write_view);
commentText = findViewById(R.id.editText_comment);
ratingBar = findViewById(R.id.write_ratingbar);
saveButton = findViewById(R.id.saveButton);
Button exitButton = findViewById(R.id.exitButton);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
returnToMain();
}
});
exitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
public void returnToMain() {
comment = commentText.getText().toString();
rating = ratingBar.getRating();
Intent intent = getIntent();
intent.putExtra("comment", comment);
intent.putExtra("rating", rating);
setResult(RESULT_OK, intent);
finish();
}
}
메인 액티비티와 작성하기 액티비티 간의 인텐트는 처리를 하여 정상적으로 작동을 하는데 모두보기액티비티에서 버튼을 눌러 작성하기 화면으로 이동하여 작성을 한 후 리스트를 갱신 해줘야 하는데 감이 잡히질 않습니다...
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
메인 액티비티
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); .... //모두보기 버튼 allView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), AllCommentView.class); intent.putExtra("items", items); startActivityForResult(intent, 101); } }); }
모두보기 액티비티
public class AllCommentView extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_all_comment_view); .... allViewWriteButton = findViewById(R.id.allviewwrite_button); allViewWriteButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), CommentWriteView.class); startActivityForResult(intent, 101); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 101) { if (resultCode == RESULT_OK) { final String comment = data.getStringExtra("comment"); final float rating = data.getFloatExtra("rating", 0.0f); if (comment != null) { final Intent intent = new Intent(); intent.putExtra("comment", comment); intent.putExtra("rating", rating); setResult(RESULT_OK, intent); } } finish(); } } }
위 코드만 추가하면 될것 같습니다.
기존 코드처럼 모두보기 에서 작성하기로 넘어갈때 곧 바로
finish()
를 호출하면 작성하기에서 메인으로 돌아올때RESULT_CANCELD
이 넘어올것 이기 때문에, 메인 - 모두보기 - 작성하기 순서로 실행 된 시나리오 에서는 작성하기화면에서 나올때 모두보기의 onActivityResult() 에서 작성 된 댓글 여부를 체크해서 setResult() 값을 설정 해준뒤에 finish() 를 합니다.-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력