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

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

글쓴이 : 쪼렙개봘자 날짜 : 2017-01-25 (수) 18:23 조회 : 851
글주소 : http://www.androidside.com/B49_best/12654
 
  임베디드 시스템 마이크로비젼
임베디드 개발보드, 개발용역, IAR 컴파일러 총판, 에뮬레이터.
www.mvtool.co.kr
  서울정보산업교육원
정보보안 파이선 PHP 웹모의해캥 악성코드 리버스엔지니어링 모바일취약점분석
www.siie.co.kr
  재능을 거래하는 문화 재능넷
저렴한 비용으로 안드로이드 재능을 거래하는 신개념 재능거래 오픈마켓
www.jaenung.net
신청하기


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 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기