디비와 리스트뷰를 연동하기 위해 아래와 같이 SimpleCursorAdapter을 사용했구요.
리스트 뷰의 셀별로 배경을 지정해주기 위해서는 아래와 같이 해주면 되는데
이 때 position(셀의 index)을 어떻게 구해야 할 지 모르겠어요..
getPosition 뭐 이런 것 없나요?ㅠㅠ
조언 부탁드립니다.
mListView.setBackgroundResource((position & 1) == 1 ? R.drawable.bg_list1 : R.drawable.bg_list2);
AdapterStomach=new SimpleCursorAdapter(mListView.getContext(), R.layout.page_list_listview, cursor,
new String[]{"m_name", "tag_line"},new int[]{R.id.toptext, R.id.bottomtext});
mListView.setAdapter(AdapterStomach);
mListView.setBackgroundResource(R.drawable.bg_list1);
Adapter에 bindView에 파라메터로 Cursor가 있습니다.
cursor.getPosition() 하면 현재 사용중인 cursor의 위치가 반환됩니다.
아래와 같이 getView를 오버라이드 해주니까 에러나네요ㅠㅠ
왜그렇죠?ㅠㅠ
private class productAdapter extends SimpleCursorAdapter {
public productAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
v.setBackgroundResource((position & 1) == 1 ? R.drawable.bg_list1 : R.drawable.bg_list2);
return v;
}
}
getView 를
public View getView(..., ..., ...){
View v = super.getView(..., ..., ...);
v.setBackGro ....;
return v;
}
아니면,
newView를 오버라이드 하여,
... ... newView(..., ..., ...){
View v = super.newView(..., ..., ...);
int position = cursor.getPosition();
v.setBackGro ....;
return v;
}
-_-;;;
음... 가장 최고의 방법은 구글에 SimpleCursorAdapter 검색하시면 될 듯 합니다.!!
너무 많은 자료가 있어서 ``;
산넘어 산이네요ㅠㅠ 널 체크 했더니 리스트뷰 배경은 바뀌는데
리스트뷰에 내용이 싹 사라지네요ㅠㅠ
일단 oncreate에
inflater=LayoutInflater.from(this);
mListView=(ListView) findViewById(R.id.list_laundry);
AdapterStomach=new productAdapter(mListView.getContext(), R.layout.page_list_listview, cursor,
new String[]{"m_name", "tag_line"},new int[]{R.id.toptext, R.id.bottomtext});
mListView.setAdapter(AdapterStomach);
mListView.setOnItemClickListener(this);
mListView.setSelector(color.transparent);
private class productAdapter extends SimpleCursorAdapter {
public productAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
}
// @Override
// public void bindView(View v, Context context, Cursor c) {
// //v = inflater.inflate(R.layout.page_list_listview, null);
// v.setBackgroundResource((c.getPosition() & 1) == 1 ? R.drawable.bg_list1 : R.drawable.bg_list2);
// }
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if ( v == null ) {
//LayoutInflater in = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.page_list_listview, null);
}
// View v = convertView;
// if (convertView == null)
// {
v.setBackgroundResource((position & 1) == 1 ? R.drawable.bg_list1 : R.drawable.bg_list2);
// }
return v;
}
}




SimpleCursorAdapter의 getView()를 오버라이드 하여, 각 row에 백그라운드를 넣으면 됩니다.