SQLite의 목록보기에 체크 박스가 있습니다 .. 모두 정상적으로 작동하지만 하나 이상의 체크 박스를 클릭하고 상태를 변경하십시오. 체크 박스 상태 (목록보기는 처음 생성) 원래 값안드로이드를 스크롤 할 때 listview의 체크 박스가 상태를 저장하지 않습니다.
여기내 코드로 다시 변경 .. 당신이 그 해결 방법을 말해 줄 수 있기를 바랍니다 : ListView에이 내부
public void showSQL(){
/*
* Open the same SQLite database
* and read all it's content.
*/
mySQLiteAdapter = new SQLiteAdapter(this);
mySQLiteAdapter.openToRead();
Cursor cursor = mySQLiteAdapter.queueAll();
startManagingCursor(cursor);
from = new String[]{SQLiteAdapter.NUMBER_CONTENT};
to = new int[]{R.id.text};
SimpleCursorAdapter cursorAdapter =
new SimpleCursorAdapter(this, R.layout.row, cursor, from , to);
cursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder(){
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
String number ;
String is_star ;
if (columnIndex == cursor.getColumnIndex("numbers")) {
// If the column is IS_STAR then we use custom view.
number = cursor.getString(1);
is_star = cursor.getString(cursor.getColumnIndex("status"));
if (is_star.equals("true")) {
// set the visibility of the view to GONE
((CheckBox) view).setText(" " + number);
((CheckBox) view).setChecked(true);
return true;
}else{
((CheckBox) view).setText(" " + number);
((CheckBox) view).setChecked(false);
return true;
}
//return true;
}
return false;
}
});
stopManagingCursor(cursor);
listContent.setAdapter(cursorAdapter);
listContent.setOnItemClickListener(listContentOnItemClickListener);
mySQLiteAdapter.getAllNumbers();
mySQLiteAdapter.close();
}
private ListView.OnItemClickListener listContentOnItemClickListener
= new ListView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
Cursor cursor = (Cursor) parent.getItemAtPosition(position);
int item_id = cursor.getInt(cursor.getColumnIndex(SQLiteAdapter.NUMBER_ID));
String item_content1 = cursor.getString(cursor.getColumnIndex(SQLiteAdapter.NUMBER_CONTENT));
mySQLiteAdapter = new SQLiteAdapter(getBaseContext());
item = (CheckBox) view;
mySQLiteAdapter.openToRead();
String check = null;
Cursor c = mySQLiteAdapter.getNumberStatus(item_id);
if (c.moveToFirst()){
check = c.getString(c.getColumnIndex(SQLiteAdapter.NUMBER_STATUS));
}
mySQLiteAdapter.close();
//The change color logic is here!
if(item.isChecked()) {
mySQLiteAdapter.openToWrite();
mySQLiteAdapter.updateNumberStatus(item_id,"false");
mySQLiteAdapter.close();
// Toast.makeText(MainActivity.this, "deleted" +" "+ check, Toast.LENGTH_LONG).show();
item.setChecked(false);
}
else {
mySQLiteAdapter.openToWrite();
mySQLiteAdapter.updateNumberStatus(item_id,"true");
mySQLiteAdapter.close();
// Toast.makeText(MainActivity.this, item_content1 +" "+ check , Toast.LENGTH_LONG).show();
item.setChecked(true);
}
}};
시도해주세요. http://stackoverflow.com/questions/16685366/customised-listview-using-arrayadapter-class-in-android/16686623#16686623 – Raghunandan