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

리스트뷰에 footer 구현한 후 순서가 꼬입니다.

0 추천
// 푸터 생성
  LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  m_footer = (LinearLayout) inflater.inflate(
    R.layout.list_cell_footer1main, null);
  Comment = (Button) m_footer.findViewById(R.id.btnFooter);

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

    Log.v("log", "Comment ++++++++++++++++++++++ : " + v);
    if (viewAdapter.setCount(++m_nPage, NP)) {
     viewAdapter.notifyDataSetChanged();
     footerOk = true;
    }

   }
  });

if (viewItemList1.size() > NP) {
   pListView.addFooterView(m_footer, null, false);
  }

adapter.setCount(m_nPage, NP);
---------------------------------------------


public class PersonViewHolder {
  public TextView txtName;
  public TextView txtTime;
  public TextView txtTitle;
  public Button btnDelete;
  public GridView gridView;
 }
 
 class ViewListAdapter extends BaseAdapter {
  Context mainCon;
  LayoutInflater inflater;
  ArrayList<ViewItem1> arSrc;

  int layout;
  int m_nCount = 0;

  public ViewListAdapter(Context context, int alayout,
    ArrayList<ViewItem1> aarSrc) {
   mainCon = context;
   inflater = (LayoutInflater) context
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   arSrc = aarSrc;
   layout = alayout;
  }

  // 어뎁터 카운트를 설정한다
  public boolean setCount(int nPage, int nNp) {
   //Toast.makeText(mainCon, "setCount", Toast.LENGTH_LONG).show();
   // Log.v("log","setCount: ++++++++++++++++++++++++++++");
   if (nPage != 0 && nNp != 0) {
    m_nCount = nPage * nNp;
    return true;
   } else {
    return false;
   }
  }

  @Override
  public int getCount() {
   if (m_nCount != 0) {
    if (arSrc.size() > m_nCount) {
     return m_nCount;
    } else {
     // 만약 xml 파싱을 할 경우 마지막 페이지가 호출 완료된 시점에서 푸터를 제거.
     pListView.removeFooterView(m_footer);
     return arSrc.size();
    }
   }
   return arSrc.size();
  }

  @Override
  public Object getItem(int position) {
   return arSrc.get(position).title;
  }

  @Override
  public long getItemId(int position) {
   return position;
  }

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

   PersonViewHolder viewHolder = null;
   
   if (convertView == null || convertView.getId() != R.layout.listview_item) {
    convertView = inflater.inflate(layout, parent, false);
    
    viewHolder = new PersonViewHolder();
    viewHolder.txtName = (TextView) convertView.findViewById(R.id.name);
    viewHolder.txtTime = (TextView) convertView.findViewById(R.id.time);
    viewHolder.txtTitle = (TextView) convertView.findViewById(R.id.title);
    viewHolder.btnDelete = (Button) convertView.findViewById(R.id.delete);
    viewHolder.gridView = (GridView) convertView.findViewById(R.id.gridview);
    
    convertView.setTag(viewHolder);
    convertView.setId(R.layout.listview_item);
    
   } else {
    viewHolder = (PersonViewHolder) convertView.getTag();
   }

   viewHolder.txtName.setText(arSrc.get(position).name);
   viewHolder.txtTime.setText(arSrc.get(position).time);
   viewHolder.txtTitle.setText(arSrc.get(position).title);
   
   SharedPreferences pref = getSharedPreferences("configPreference", 0);
   String  userNo = pref.getString("userNo", "");
   
   Log.d("userNo", pref.getString("userNo", ""));
   Log.d("arSrc.get(position).user)", arSrc.get(position).user);
   
   if(userNo.equals(arSrc.get(position).user)){
    viewHolder.btnDelete.setVisibility(View.VISIBLE);
   }  

   return convertView;
  }

 }

리스트뷰 로우에 텍스트뷰 3개, 버튼 하나를 구현했는데요. 버튼은 특정할 경우에만 보이게 구현했습니다.

그런데 리스트뷰에 footer를 구현해서 더보기를 넣은 후부터 더보기버튼 누른 후 스크롤 해보면 리스트뷰 로우의 버튼이 없던데도 생겨버리는 현상이 나타납니다.

텍스트뷰는 그대로고요.

여러가지 방법을 써봤는데....안되어서 질문 납깁니다...

 

익명사용자 님이 2014년 5월 28일 질문

1개의 답변

+1 추천
 
if(userNo.equals(arSrc.get(position).user)){
    viewHolder.btnDelete.setVisibility(View.VISIBLE);
   }
else
viewHolder.btnDelete.setVisibility(View.GONE);
 
 
리스트뷰는 화면을 넘길때마다 이전 뷰를 재활용하여 사용하는걸로 알고 있어요.
위처럼 버튼을 없애주는 코드가 필요 할겁니다.
 
여룽이 (4,750 포인트) 님이 2014년 5월 28일 답변
...