답변
은 내가 CursorAdapter에 어댑터를 변경 시작했지만 솔직히이 SimpleCursorAdapter 예 (난 당신의 코드를 반영하도록 업데이트 내가 할 수있는 최선의 등.)과 같은 것이다 :
public class Example extends Activity {
SimpleCursorAdapter adapter;
Database database;
ListView listView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
database = new Database(this);
database.open();
// See my note below for a detailed explanation of this
Cursor cursor = database.getAllNames();
adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_checked,
cursor,
new String[] { "name" }, // "name" is the column in your database that I describe below
new int[] {android.R.id.text1}, 0);
listView = (ListView) findViewById(R.id.list);
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
Button delete = (Button) findViewById(R.id.delete_button);
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
long[] checkedIds = listView.getCheckedItemIds();
for(long id : checkedIds)
database.deleteName(id);
listView.clearChoices();
adapter.changeCursor(database.getAllNames());
}
});
}
@Override
protected void onDestroy() {
database.close();
super.onDestroy();
}
}
좋아, 당신의 필요 이 작업을하기 위해 Database 클래스에 모든 이름 (나는 getAllNames()
이라고 불렀다)을 가진 Cursor를 리턴하는 메소드이다.
CREATE TABLE Names (
_id INTEGER PRIMARY KEY,
names TEXT);
당신은 그에 따라 조정할 수 있습니다 : 지금은 테이블 스키마는 다음과 같이 보입니다 가정. 나는 그 설명 희망
public Cursor getAllNames() {
return NameDatabase.rawQuery("SELECT _id, name FROM Names ORDER BY name;", null);
}
:
"SELECT _id, name FROM Names;"
을 아니면 이름이 알파벳 순서하려는 경우 : 귀하의 Database.getAllNames()
방법은 다음과 같이 쿼리를 사용해야합니다
"SELECT _id, name FROM Names ORDER BY name;"
을 모두 함께처럼 보일 것이다 몇 가지, 솔직히 이것은 당신이 원하는 것을하는 가장 쉬운 방법입니다.
자신의 레이아웃에 추가 자신의 행 (목록 항목) 레이아웃
를 추가하는 것은 간단하다. 당신이 simple_list_item_checked.xml의 모습을 좋아하기 때문에, 현실을 복사 할 레이아웃의와 색상을 위해 그것을 조정할 :
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:checkMark="?android:attr/textCheckMark"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:textAppearance="?android:attr/textAppearanceLarge" />
추가 할 필요가있다 : 하나 있기 때문에
는android:background="#ffffffff"
android:textColor="#ff000000"
(즉 공지 사항 요소는 ViewGroup이 필요없고 LinearLayout도, RelativeLayout도 없다. 또한 "@android:id/text1"
은 SimpleCursorAdapter`android.R.id.text1 '에서 참조한 id이며 적절하게 변경해야하는 레이아웃을 변경할 때 사용된다.
그러나 경우에만 색상을 반전하려는 경우 전체 테마로 다른 테마를 사용하는 것이 좋습니다. 매니페스트를 열고이 테마를 추가 : 기본 안드로이드
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light" >
이 Theme.Dark를 사용하여, 단순히 Theme.Light로 변경. 이제 모든 항목에는 기본적으로 흰색 배경과 검은 색 텍스트가 있습니다!
어댑터의의 getView에서의 getView 마이너 조정() 나중에 참조 할 수 있도록
,() 당신은 모든 새로운 행에 대해 getLayoutInflater()를 호출합니다. 생성자에서 LayoutInflater를 한 번만 가져 와서 변수에 저장하면됩니다 (LayoutInflater mLayoutInflater
). getView()에서 mLayoutInflater.inflate(...)
과 함께 사용하면됩니다.
희망 하시겠습니까?
CustomAdapter를 사용하고 있습니다. 나는 그것을 첫 번째 게시물에 추가했다. – user1617102
CursorAdapter와 같은 SQLite ID를 보유하지 않는 ArrayAdapter를 실제로 확장하는 것을 볼 수 있습니다. (이것은 이전에 보았던 것입니다.) CursorAdapter를 확장하기 위해 그것을 변경합시다. ** 또한 ** getView() 및 ViewHolder() _perfectly_를 사용했습니다. (그냥 Upvote.) – Sam
Heya, 지금 삭제하고 ListView 작동합니다. 나에게 SimpleCursorAdapter의 마법을 보여 주셔서 감사합니다. :) 지금은 단지 하나의 작은 문제가 있습니다. CursorAdapter는 표준 레이아웃 (android.R.layout.simple_list_item_checked)을 사용하며 행 레이아웃으로 대체 할 수 없습니다. 나는이 표준이 너무 좋아 보이기 때문에 문제가되지 않는다는 것을 의미합니다. 하지만 텍스트의 색상은 (Alpha = 0) 인 것처럼 보입니다. 클릭 할 때까지는 보이지 않습니다. 그런 다음 텍스트 색상이 검정색이됩니다. 이 문제를 해결하는 방법을 알고 있습니까? – user1617102
- 1. sqlite 데이터베이스의 행 삭제
- 2. sqlite 테이블에서 행 삭제 수행
- 3. 안드로이드 sqlite 삭제 행 실패
- 4. ListView를 사용하여 editText를 사용하여 SQLite 데이터베이스 필터링
- 5. SQLite 안드로이드에서 여러 WHERE가있는 행 삭제
- 6. 테이블 및 sqlite 데이터베이스에서 행 삭제
- 7. 안드로이드 SQLite 행 번호 선택 및 삭제
- 8. Android sqlite 행 삭제 및 삽입
- 9. jQuery를 사용하여 행 삭제
- 10. ListView를 선택 행
- 11. 다른 행 수를 사용하여 ListView를 사용하려고 시도하십시오.
- 12. 안드로이드 Sqlite 한도로 삭제
- 13. OpenXML을 사용하여 Excel에서 행 삭제
- 14. JOIN을 사용하여 Zend_Db_Table에서 행 삭제
- 15. Excel 행 삭제 잘못된 행 삭제
- 16. 삭제 행
- 17. 삭제 행
- 18. SQLite WPF에서 ListView를 채우는 데 사용 #
- 19. SQLite delete 구문을 사용하여 모든 데이터 삭제?
- 20. 행 삭제 후 SQLite 데이터 페치 문제가 발생합니까?
- 21. 다른 테이블에 일치하는 항목이 없을 때 SQLite 테이블에서 행 삭제
- 22. 목록 메뉴에서 android sqlite 삭제
- 23. tableview에서 행 삭제
- 24. Sqlite Iphone을 사용하여 데이터베이스에 행 삽입하기
- 25. 루프를 사용하여 sqlite 데이터베이스에 행 추가 (Phonegap)
- 26. 트리거 삭제 sqlite
- 27. Sqlite 모든 함수 삭제
- 28. Sqlite 삭제 쿼리 오류
- 29. sqlite 데이터베이스에서 레코드 삭제
- 30. Android 용 SQLite 삭제
몇 가지 방법이 있습니다. (가장 쉬운 것으로 시작할 것입니다.) 행 레이아웃은 어떻게 생겼습니까? – Sam
'long '값을 사용하여 행을 삭제합니다. 첫 번째 게시물에 코드를 추가했습니다. – user1617102
ListView에서 사용하는 XML 레이아웃에 대해 묻고 있는데,이 레이아웃은 무엇입니까? (ListView의 다중 선택 기능을 사용하는 경우, 이것은 _ 간단합니다!) – Sam