0
ListView
の複数の項目を長くクリックすると削除しようとしています。私は複数の項目の削除のためのコードを含んでいます。しかし、そのアイテムは削除されません。リストからアイテムを削除し、dbに反映させてください。複数の削除リストビューとsqliteデータベースに反映
ListViewAdapter
はListView
のアダプタークラスです。
all_memories_getter_setter
は、ListViewitems
のゲッター/セッターです。
All_memories
は複数のアイテムを削除するためのコードを含むMy Javaクラスです。ここで
は私のリストビューアダプターコードです:ここで
package com.example.intel.personaldiary.Adapter;
import android.app.Activity;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.intel.personaldiary.All_memories;
import com.example.intel.personaldiary.R;
import com.example.intel.personaldiary.all_memories_getter_setter;
import java.util.ArrayList;
import java.util.List;
public class ListViewAdapter extends BaseAdapter {
public ArrayList<all_memories_getter_setter>list;
Activity activity;
/////**/////
private SparseBooleanArray mSelectedItemsIds;
public ListViewAdapter(Activity activity, ArrayList<all_memories_getter_setter>list)
{
super();
mSelectedItemsIds= new SparseBooleanArray();
this.activity=activity;
this.list=list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
/////**///////
public void remove(all_memories_getter_setter object){
list.remove(object);
notifyDataSetChanged();
}
public List<all_memories_getter_setter> getall_memories_getter_setter(){
return list;
}
public void toggleSelection(int position){
selectView(position, !mSelectedItemsIds.get(position));
}
public void removeSelection(){
mSelectedItemsIds = new SparseBooleanArray();
notifyDataSetChanged();
}
public void selectView(int position , boolean value){
if(value){
mSelectedItemsIds.put(position, value);
}else{
mSelectedItemsIds.delete(position);
notifyDataSetChanged();
}
}
public int getSelectedCount(){
return mSelectedItemsIds.size();
}
public SparseBooleanArray getSelectedIds(){
return mSelectedItemsIds;
}
public class Viewholder
{
TextView txtFirst;
TextView txtSecond;
TextView txtThird;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Viewholder holder;
LayoutInflater inflater = activity.getLayoutInflater();
if (convertView == null) {
convertView = inflater.inflate(R.layout.activity_all_memories_listview, null);
holder = new Viewholder();
holder.txtFirst = (TextView) convertView.findViewById(R.id.list_date);
holder.txtSecond = (TextView) convertView.findViewById(R.id.list_title);
holder.txtThird = (TextView) convertView.findViewById(R.id.list_content);
convertView.setTag(holder);
} else {
holder = (Viewholder) convertView.getTag();
}
holder.txtFirst.setText("" + list.get(position).getDate());
holder.txtSecond.setText("" + list.get(position).getTitle());
holder.txtThird.setText("" + list.get(position).getContent());
return convertView;
}
}
は私のゲッターセッターのクラスコードです:
package com.example.intel.personaldiary;
public class all_memories_getter_setter {
int id;
String date;
String title;
String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() { return content; }
public void setContent(String content) { this.content = content; }
}
は、ここに私の複数の削除コードクラスです:
public class All_memories extends Activity {
ListView listview;
ArrayList<all_memories_getter_setter>list;
ListViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_memories1);
listview = (ListView) findViewById(R.id.listmemories);
populateList();
adapter = new ListViewAdapter(this,list);
listview.setAdapter(adapter);
/////multiple delete on clicking listview///////
listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listview.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode,
int position, long id, boolean checked) {
// Capture total checked items
final int checkedCount = listview.getCheckedItemCount();
// Set the CAB title according to total checked items
mode.setTitle(checkedCount + " Selected");
// Calls toggleSelection method from ListViewAdapter Class
adapter.toggleSelection(position);
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
// Calls getSelectedIds method from ListViewAdapter Class
SparseBooleanArray selected = adapter.getSelectedIds();
// Captures all selected ids with a loop
for (int i = (selected.size() - 1); i >= 0; i--) {
if (selected.valueAt(i)) {
all_memories_getter_setter selecteditem = (all_memories_getter_setter) adapter.getItem(selected.keyAt(i));
getContentResolver().delete(DataProvider.WRITE_URI, DataProvider.ID + '=' + list.get(i).getId(), null);
System.out.println("##############values of ss" + list.get(i).getId());
// Remove selected items following the ids
adapter.remove(selecteditem);
populateList();
}
}
final ListViewAdapter adapter = new ListViewAdapter(All_memories.this, list);
listview.setAdapter(adapter);
mode.finish();
return true;
default:
return false;
}
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
adapter.removeSelection();
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
});
/////multiple delete on clicking listview///////
/////////////////////////////retrieve from db and display in listview
private void populateList() { System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
Cursor cs;
list = new ArrayList<all_memories_getter_setter>();
SQLiteDatabase mydb;
Cursor cursor;
mydb=getApplicationContext().openOrCreateDatabase(DataProvider.DATABASE_NAME, Context.MODE_PRIVATE,null);
cursor=mydb.rawQuery("Select * from "+DataProvider.TBL_WRITE+"",null);
System.out.println("cursor"+cursor.getCount());
cs = getContentResolver().query(DataProvider.WRITE_URI, null, null, null, null);
System.out.println("$$count is" + cs.getCount());
System.out.println("size of list" + list.size());
System.out.println("ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
list = new ArrayList<all_memories_getter_setter>();
// Cursor cs = getContentResolver().query(DataProvider.REM_URI, null, null, null, null);
System.out.println("ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc");
//cs.moveToFirst();
while (cs.moveToNext()) {
int a;
int id = cs.getInt(cs.getColumnIndex(DataProvider.ID));
System.out.println("**id" + id);
String str_date = cs.getString(cs.getColumnIndex(DataProvider.DATE));
String str_title = cs.getString(cs.getColumnIndex(DataProvider.TITLE));
String str_content = cs.getString(cs.getColumnIndex(DataProvider.CONTENT));
//String str_spi = cs.getString(cs.getColumnIndex(DataProvider.TYPE));
//String str_remi = cs.getString(cs.getColumnIndex(DataProvider.REM));
System.out.println("$$name is" + str_date);
System.out.println("$$name is" + str_title);
System.out.println("$$name is" + str_content);
//System.out.println("$$name$$ is" + str_remi);
Log.e("NAME_MAIN", str_date);
all_memories_getter_setter all_memories_getter_setter = new all_memories_getter_setter();
// all_memories_getter_setter.setId(id);
//details.setName(str_name);
all_memories_getter_setter.setDate(str_date);
all_memories_getter_setter.setTitle(str_title);
all_memories_getter_setter.setContent(str_content);
//details.setRemtype(str_remi);
// details.setRem(str_rem);
list.add(all_memories_getter_setter);
System.out.println("temp1 values" + list);
//Toast.makeText(getApplicationContext(), THIRD_COLUMN, Toast.LENGTH_LONG).show();
} }
/////////////retrieve from db and display in listview////////
これは私が望むものではありません。私はリストビューから、またdbからも削除しなければなりません。私は削除のためのコードを含んでいます。しかし、リストビュー内の項目は削除されません。 – bubbly
最終的なListViewAdapterアダプタをリセットする理由=新しいListViewAdapter(All_memories.this、list); listview.setAdapter(アダプタ);リストデータは変更されません。コードからこれらの2行を削除する必要があります。 –
リスト項目が削除されました。 Bt私は再びそのページを開き、削除された項目はまだそこにあります。 – bubbly