마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스트뷰에 인텐트를 받아서 아이템을 추가하는데 아이템이 늘어나지않고 교체가 되어버립니다.

0 추천

 

현재 어플구조를 이런식으로 짜고있습니다. A액티비티에 리스트뷰 아이템을 터치시 B로 인텐트를 보내고

B액티비티에서 즐겨찾기 추가버튼을 누르면 그냥 리스트뷰에 아이템이 추가되는 방식을 사용할려고합니다.

 

정렬이나 이런거 하나도 안쓰고 그냥 정말 추가만 되게 하려고하는데요.

 

인텐트는 제대로 넘어가는데 계속 아이템이 추가가 되지않고 계속 교체만 됩니다.

예를 들면 A액티비티에서 0번아이템을 터치하면 0번관련 아이템 데이터가 B액티비티로 넘어가고

B액티비티에서 즐겨찾기 버튼을 누르면 인텐트를 A액티비티로 돌려주고 즐겨찾기 리스트뷰에 아이템이 추가됩니다.

그리고 A액티비티에서 1번 아이템을 터치하고 B액티비티에서 즐겨찾기 추가를 하면 0번아이템의 즐겨찾기아이템이 즐겨찾기 리스트뷰에서 사라지고 1번의 관련데이터가 들어갑니다.

 

아래는 A액티비티에서 B로 인텐트를 넘기는 부분과 인텐트를 받아왔을때 처리하는 메소드 부분입니다.

//리스트 아이템 클릭시
        fruitList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                Intent intent = new Intent(MainActivity.this, exampleActivity.class);

                intent.putExtra("icon",((fruits)adapter.getItem(position)).getIcon());
                intent.putExtra("name",((fruits)adapter.getItem(position)).getName());
                intent.putExtra("example",((fruits)adapter.getItem(position)).getExample());
                intent.putExtra("nutrit",((fruits)adapter.getItem(position)).getNutrit());
                intent.putExtra("sickness",((fruits)adapter.getItem(position)).getSickness());
                intent.putExtra("star",((fruits)adapter.getItem(position)).getStar());

                startActivityForResult(intent,1);

            }
        });

//즐겨찾기에 추가하는 메소드
void addStarListItem() {
        starListAdapter staradapter = new starListAdapter();
        StarList.setAdapter(staradapter);

        staradapter.addfruits(starAddIcon, starAddtitle, staraddExample, starAddNutrit, staraddsicknees,true);

        Toast.makeText(getApplicationContext(), "즐겨찾기에 추가되었습니다", Toast.LENGTH_SHORT).show();
    }

//설명 액비티티에서 버튼을 눌렀을시
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        //만약 설명액티비티에서 넘어온 데이터가 없으면 그냥 아무짓도 하지 않는다
        if(data == null)
        {
            return ;
        }
        
            starAddIcon = data.getIntExtra("icon", 0);
            starAddtitle = data.getStringExtra("title");
            staraddExample = data.getStringExtra(("example"));
            starAddNutrit = data.getStringExtra("nutrit");
            staraddsicknees = data.getStringExtra("sickness");
            addStarListItem();
        
        }

 

이부분은 B액티비티 전문입니다.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_example);

        ImageView icon = (ImageView) findViewById(R.id.icon);
        TextView title = (TextView) findViewById(R.id.title);
        TextView example = (TextView) findViewById(R.id.exampleText);
        TextView sickness = (TextView) findViewById(R.id.sicknessExample);
        TextView nutrit = (TextView) findViewById(R.id.nutritExample);
        TextView staraddBTN = (Button) findViewById(R.id.starAddBTN);

        final Intent intent = getIntent();

        icon.setImageResource(intent.getIntExtra("icon", -1));
        title.setText(intent.getStringExtra("name"));
        example.setText(intent.getStringExtra("example"));
        sickness.setText(intent.getStringExtra("sickness"));
        nutrit.setText(intent.getStringExtra("nutrit"));

        staraddBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                    Intent stardata = new Intent();
                    stardata.putExtra("icon", intent.getIntExtra("icon", 0));
                    stardata.putExtra("title", intent.getStringExtra("name"));
                    stardata.putExtra("example", intent.getStringExtra("example"));
                    stardata.putExtra("nutrit", intent.getStringExtra("nutrit"));
                    stardata.putExtra("sickness", intent.getStringExtra("sickness"));
                    stardata.putExtra("star", true);

                    setResult(1, stardata);
                    finish();
            }
        });
    }

 

어떻게해야 처음에 넣어둔 아이템이 사라지지않고 추가를 시킬수 있을까요?

LuckyClover (180 포인트) 님이 2018년 6월 11일 질문

1개의 답변

+1 추천
 
채택된 답변
매번 adapter 를 set 하는게 문젭니다. getAdapter 가 null 이 아닐때에는 getAdapter 로 얻은 값에 add 하세요
aucd29 (218,390 포인트) 님이 2018년 6월 11일 답변
LuckyClover님이 2018년 6월 11일 채택됨
정말 감사합니다 ㅠㅠ 이쪽 문제일거라고 어렴풋이 예상은 했는데 해결법을 전혀 찾지를 못해서 몇일째 머리 쥐뜯고있었거든요.
덕분에 속이 다 뚫렸습니다. 정말 감사합니다.
...