총 게시물 931건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

안드로이드 리스트뷰에서 새로고침에 대해 궁금한것이 있습니다!

글쓴이 : 쪼렙개봘자 날짜 : 2017-01-25 (수) 18:23 조회 : 941
글주소 : http://www.androidside.com/B49_best/12654
 
  임베디드 시스템 마이크로비젼
임베디드 개발보드, 개발용역, IAR 컴파일러 총판, 에뮬레이터.
www.mvtool.co.kr
  안드로이드 잡코리아
안드로이드, 직무별 산업별 궁금한 채용정보 다 모였다! 한눈에 보는 취업정보!
www.jobkorea.co.kr
  G마켓 안드로이드
올 봄 쇼핑을 바꾸는 쇼핑! G마켓 웰컴 30%쿠폰, 매일 초강력 슈퍼딜! G마켓
www.gmarket.co.kr
신청하기


KakaoTalk_20170125_181939285.jpg

제가 구현한 리스트뷰 화면 인데요!!
제가 커스텀뷰를 통해서 리스트뷰를 구성했는데..
이 화면에서 삭제버튼을 눌렀을 경우 바로 데이터가 지워지는걸 구현하고 싶은데 방법을 못찾겠어서요..
삭제 버튼을 눌렀을 경우 이 액티비티를 재실행 해야하는건가요??




쪼렙개봘자 님의 개발 Q&A FAQ 최신글 [더보기]


질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

허접샴푸 2017-01-26 (목) 10:12
님께서는 커스텀 어댑터로 리스트뷰를 만드셨잖아요?
예를 들겠습니다.
ListView mListview;
List myList = new ArrayList<Object>();
CustomAdapter ca = new CustomAdapter(myList); 이런식으로 하셨을 것 같은데
mListView.setAdapter(ca);

그럼 
삭제 버튼을 클릭했을 때 
myList.remove(position); 하신다음
ca.notifyDataSetChanged(); 하시면 됩니다.


댓글주소 추천 0 반대 0
     
     
쪼렙개봘자 2017-01-26 (목) 10:41
[@허접샴푸] 
답변 감사합니다!! 
지금 설명하신부분은 이해하겠는데요!! 근데 제가 리스트뷰를 커스텀뷰로 만들어서 거기서 버튼을 생성하고
클릭 이벤트를 발생하는데.. 거기서는 어댑터가 없는데 그럴떈 어떻게 해야하나요??
댓글주소 추천 0 반대 0
          
          
허접샴푸 2017-01-26 (목) 11:13
[@쪼렙개봘자]
holder로 만드셨나요? 아니면 그냥 inflate 해서 getview쪽에서 만드셧나요?
Button b = (Button) findViewById(R.id.아이디); 로 만드셨을거아니에요? 그럼 거기서
b.setOnClickListener(new OnClickListener 하셔서 처리하시면 됩니다. 그리고 getView 쪽에 보면 int position이 있짜나요?? 그 position을 이용해서 삭제한다음 단순히 notifydatasetchanged() 해보세요.

position으로 리스트의 값을 지워야 할 경우 
new customAdapter(myList); 넘기셨자나요?
그럼
class CustomAdapter 안에다가
private ArrayList<Object> tempList; 만드신다음
CustomAdapter(ArrayList<Object> temp){
  this.tempList = temp;
}
하신다음
getview에서
button.setOnclickListener(new OnClickListener(){
tempList.remove(position);
notifydatasetChanged 해보세요.
});
댓글주소 추천 0 반대 0
               
               
쪼렙개봘자 2017-01-26 (목) 11:48
[@허접샴푸]
우와.. 답변 감사드립니다!!!
제가 한것은 홀더로 안하고 따로 클래스를 만들어서 거기서 inflate를 했거든요 거기서 버튼 이벤트를 
넣어주었고.. 거기서 할 때는 많이 생각해봐야할거같거든요.. 한번 저 위에 방식대로 응용해서 해봐야 할거같은데 혹시나 inflate를 제가 말한방식대로 했을 경우에는 커스텀어댑터 클래스에서 새로운 메소드를 만들어서 remove한다음에 notify를 해야하는 건가요!!!?? 정말 죄송합니다.. 제가 개발한지 얼마안되서요 ㅠㅠ 
댓글주소 추천 0 반대 0
                    
                    
허접샴푸 2017-01-26 (목) 13:38
[@쪼렙개봘자]
http://stackoverflow.com/questions/23103356/remove-item-from-custom-listview-on-button-click

여기를 봐보세요. 님이랑 똑같은 문제인거같아요~
제가 말한거와 똑같게 구현이 되어있네요~
댓글주소 추천 0 반대 0
                    
                    
허접샴푸 2017-01-26 (목) 13:39
[@쪼렙개봘자]
이해가 안되시면 차라리 adapter 쪽 코드를 다 써주세요. 거기다가 코드를 직접 써드릴테니 ㅋㅋ
댓글주소 추천 0 반대 0
                         
                         
쪼렙개봘자 2017-01-26 (목) 13:40
[@허접샴푸]
아하 넵 감사합니다 !!ㅠㅠ 안풀려서 몇일째 이러고 있어서요 ㅠㅠ

댓글주소 추천 0 반대 0
                         
                         
쪼렙개봘자 2017-01-26 (목) 13:40
[@허접샴푸]
package com.example.nh_client.StoreCoupon;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

import java.util.ArrayList;


public class AdvertiseAdapter extends BaseAdapter{

private int count = 0;

private Context mContext = null;

private ArrayList<AdvertiseData> aData = new ArrayList<AdvertiseData>();

public AdvertiseAdapter(Context mContext) {

this.mContext = mContext;

}

public boolean remove(int position){

for(int i = 0; i < aData.size(); i++){

if(position == aData.get(i).getIdx()){

aData.remove(i);

}

}

notifyDataSetChanged();

return true;

}

public void addItem(AdvertiseData nd){

aData.add(nd);


}

@Override
public int getCount() {

if((aData.size()) < 10){

count = aData.size();

}

return count;

}

@Override
public Object getItem(int position) {

return aData.get(position).getTitle();

}



public boolean setCount(int nPage, int nNp){

if (nPage != 0 && nNp != 0){

count = nPage * nNp;

if(count > aData.size()){

count = aData.size();

}

return true;

} else {

return false;

}

}


@Override
public long getItemId(int position) {

return position;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

AdvertiseManagermentView advertiseManagermentView;

if(convertView == null){

advertiseManagermentView = new AdvertiseManagermentView(mContext, aData.get(position));

} else {

advertiseManagermentView = (AdvertiseManagermentView) convertView;

advertiseManagermentView.setIdx(aData.get(position).getIdx());

advertiseManagermentView.setTitle(aData.get(position).getTitle());

advertiseManagermentView.setIcon(aData.get(position).getIcon());

advertiseManagermentView.setStartDate(aData.get(position).getStartDate());

advertiseManagermentView.setEndDate(aData.get(position).getEndDate());

}

notifyDataSetChanged();

return advertiseManagermentView;

}

}
댓글주소 추천 0 반대 0
                         
                         
쪼렙개봘자 2017-01-26 (목) 13:41
[@허접샴푸]
package com.example.nh_client.StoreCoupon;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.nh_client.R;
import com.example.nh_client_Funstion.JsonCall;


public class AdvertiseManagermentView extends LinearLayout {

private int idx;

private ImageView icon;

private TextView aTitle;

private TextView startDate;

private TextView endDate;

private Button updateBtn;

private Button deleteBtn;

public AdvertiseManagermentView(final Context context, final AdvertiseData cData){

super(context);

idx = cData.getIdx();

LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);

inflater.inflate(R.layout.activity_amv_list, this, true);

aTitle = (TextView) findViewById(R.id.advertise_title);

aTitle.setText(cData.getTitle());

icon = (ImageView) findViewById(R.id.advertise_icon);

icon.setImageResource(cData.getIcon());

startDate = (TextView) findViewById(R.id.advertise_start_date);

startDate.setText(cData.getStartDate());

endDate = (TextView) findViewById(R.id.advertise_end_date);

endDate.setText(cData.getEndDate());

updateBtn = (Button) findViewById(R.id.updateBtn);

deleteBtn = (Button) findViewById(R.id.deleteBtn);

updateBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

Intent intent = new Intent(context, AmRegistration.class);

intent.putExtra("gap", "adUp");

intent.putExtra("idx", idx);

context.startActivity(intent);

}
});

deleteBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

JsonCall jsonCall = new JsonCall();

jsonCall.JsonDel("storepush/" + idx);

Toast.makeText(getContext(), "삭제 클릭", Toast.LENGTH_SHORT).show();

}
});

}


public void setTitle(String aTitle) {

this.aTitle.setText(aTitle);

}

public void setIcon(int icon) {

this.icon.setImageResource(icon);

}

public void setStartDate(String startDate) {

this.startDate.setText(startDate);

}

public void setEndDate(String endDate){

this.endDate.setText(endDate);

}

public void setIdx(int idx) {
this.idx = idx;
}
}
댓글주소 추천 0 반대 0
                         
                         
쪼렙개봘자 2017-01-26 (목) 13:43
[@허접샴푸]
지금 문제되는 부분은 AdvertiseManagermentView.class 에서 deleteBtn 이벤트 부분입니다..ㅠㅠ
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기