SQLite 테이블이 있고 특정 작업에서 테이블에서 모든 이름을 가져 와서이 이름으로 listview를 채 웁니다.앱. ListView에서 항목을 삭제할 때 충돌이 발생했습니다.
목록 뷰 수신기 내부에서 사용자는 선택한 항목을 삭제할 수 있습니다.
문제는 응용 프로그램이 충돌하는 항목을 삭제할 때입니다.() {
private void arrayToArrayList() {
int s = str.length;
al = new ArrayList<String>();
for (int i=0; i < s; i++) {
al.add(str[i]);
}
}
private int getRowsNum() {
return mpoh.getCurrentRowNumber();
}
OnItemClickListener listViewListener = 새로운 OnItemClickListener : 여기
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylocations);
tv_counter = (TextView) findViewById(R.id.counter);
tv_testCounter = (TextView) findViewById(R.id.testCounter);
lv = (ListView) findViewById(R.id.mylist);
mpoh = new MP_DB(this);
db = mpoh.getWritableDatabase();
cv = new ContentValues();
if (hasRecords()) {
Toast.makeText(getBaseContext(), getRowsNum()+" row(s)", Toast.LENGTH_SHORT).show();
get_MPNames();
arrayToArrayList();
setListView();
lv.setOnItemClickListener(listViewListener);
} else {
Toast.makeText(getBaseContext(), "NO RECORDS"+","+getRowsNum()+"rows", Toast.LENGTH_SHORT).show();
}
}
는 ArrayList를 할 수있는 배열을 변환하는 방법 및 목록보기 리스너입니다
것은 내 코드에 봐 주시기 바랍니다@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
pos = arg2;
showDialoge();
}
};
여기 DB 및 ListView에서 요소를 삭제하는 방법 :
private void deleteMPfromListView(int pos) {
al.remove(pos);
adapter.notifyDataSetChanged();
Toast.makeText(getBaseContext(), al.size()+" rows left in list view", Toast.LENGTH_SHORT).show();
}
private void deleteMPFromDB(int pos) {
mpoh.deleteMP(pos);
Toast.makeText(getBaseContext(), getRowsNum()+" rows left in DB", Toast.LENGTH_SHORT).show();
}
private Boolean hasRecords() {
if (getRowsNum() == 0) {
return false;
} else {
return true;
}
}
private void setListView() {
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
android.R.id.text1, al);
lv.setAdapter(adapter);
}
private void get_MPNames() {
str = new String[getRowsNum()];
for (int i=0; i <= getRowsNum()-1; i++) {
str[i] = mpoh.getMP_Name(i+1);
} //tv_testCounter.setText(str[87]);
}
하지만 내 목록보기에 당신이 게시 한 다른 것 같다, 아래 – LetsamrIt
개인 무효 setListView() {= 새로운 ArrayAdapter와 \t \t \t \t 어댑터를 참조하십시오 (this, android.R.layout.simple_list_item_1, android.R.id.text1, str); lv.setAdapter (adapter); \t} –
LetsamrIt
실제 차이점이 없습니다. 어댑터의 네 번째 매개 변수가 있습니다. 이것은 레이아웃 내의 ListView의 ID입니다. 자세한 내용은 http://developer.android.com/reference/android/widget/ArrayAdapter.html#ArrayAdapter%28android.content.Context,%20int,%20int,%20java.util.List%3CT%3E%29를 참조하십시오. ArrayAdapter lv.setAdapter (adapter); setListAdapter (adapter)와 비슷한 것처럼 보입니다. . 차이점은 ListView 액티비티 내에서 호출하고 ListView lv = ... 객체가 있고 setAdapter의 외부 호출을 사용하여 어댑터를 설정한다는 것입니다. – Moritz