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

섹션 리스트뷰를 만들때 일반row에 이벤트가 먹지 않는 현상

0 추천

2가지 행을 만들어 섹션이 있는 리스트뷰를 만들려고 합니다. 커스텀어댑터를 만들어 일반 listview에 연동하여 잘 구현은 되는데요

문제는 onItemClickListener를 리스트뷰에 연동하며 Section쪽에는 이벤트가 잘 먹는데 섹션이 아닌 일반row에는 이벤트가

먹지를 않네요. 혹시 고수님들중에서 원인을 아시는분 계시면 작은 조언 부탁드리겠습니다ㅠㅠㅠ

 

-- ListView

ListView listView = (ListView)findViewById(R.id.section_list_view);

CustomSettingAdapter mAdapter = new CustomSettingAdapter(this);

listView.setAdapter(mAdapter);

 

-- CustomAdapter

public class CustomSettingAdapter extends BaseAdapter

{

 

private static final int TYPE_ITEM = 0;

private static final int TYPE_SEPARATOR = 1;

 

private ArrayList<String> mData = new ArrayList<String>();

private TreeSet<Integer> sectionHeader = new TreeSet<Integer>();

 

private LayoutInflater mInflater;

 

public int myCliquedPosition;

 

public CustomSettingAdapter(Context context) {

mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

 

public void addItem(final String item) {

mData.add(item);

notifyDataSetChanged();

}

 

public void addSectionHeaderItem(final String item) {

mData.add(item);

sectionHeader.add(mData.size() - 1);

notifyDataSetChanged();

}

 

@Override

public int getItemViewType(int position) {

return sectionHeader.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM;

}

 

@Override

public int getViewTypeCount() {

return 2;

}

 

@Override

public int getCount() {

return mData.size();

}

 

@Override

public String getItem(int position) {

return mData.get(position);

}

 

@Override

public long getItemId(int position) {

return position;

}

 

public View getView(int position, View convertView, ViewGroup parent) 

{

ViewHolder holder = null;

int rowType = getItemViewType(position);

 

if (convertView == null) {

holder = new ViewHolder();

switch (rowType) {

case TYPE_ITEM:

// convertView = mInflater.inflate(R.layout.snippet_item1, null);

// holder.textView = (TextView) convertView.findViewById(R.id.text);

convertView = mInflater.inflate(R.layout.sectionlistview_item, null);

holder.textView = (TextView) convertView.findViewById(R.id.txtViewMenu);

break;

case TYPE_SEPARATOR:

// convertView = mInflater.inflate(R.layout.snippet_item2, null);

// holder.textView = (TextView) convertView.findViewById(R.id.textSeparator);

convertView = mInflater.inflate(R.layout.sectionlistview_section, null);

holder.textView = (TextView) convertView.findViewById(R.id.listTextView);

break;

}

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

holder.textView.setText(mData.get(position));

 

return convertView;

}

 

public static class ViewHolder {

public TextView textView;

}

}

미카하이오 (380 포인트) 님이 2014년 8월 24일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...