在android中使用菜单删除listview项
您好,我正在使用菜单删除列表视图项。在android中使用菜单删除listview项,android,Android,您好,我正在使用菜单删除列表视图项。我有两个菜单,一个是delete,另一个是selectall。我正在从数据库中检索数据,并使用复选框将其显示在列表视图中如果我选择了一些列表项并选择了“删除”,则必须删除所选项。如果我从菜单中选择全选,则所有列表项都必须被选中,如果我从菜单中选择删除,则所有数据都必须被删除。问题是,如果我通过select all菜单选择所有listview项,并且我取消选中一些列表项,则剩余的选定项不会被删除。我使用了ResourceCursorAdapter显示数据库中的列
我有两个菜单,一个是
delete
,另一个是selectall
。我正在从数据库中检索数据,并使用复选框将其显示在列表视图中
如果我选择了一些列表项并选择了“删除”,则必须删除所选项。如果我从菜单中选择全选,则所有列表项都必须被选中,如果我从菜单中选择删除,则所有数据都必须被删除。
问题是,如果我通过select all
菜单选择所有listview项,并且我取消选中一些列表项,则剩余的选定项不会被删除。
我使用了ResourceCursorAdapter
显示数据库中的列表项
private void CreateMenu(Menu menu) {
menu.setQwertyMode(true);
MenuItem mnu1 = menu.add(0, 0, 0, "Delete");
{
mnu1.setAlphabeticShortcut('a');
}
MenuItem mnu2 = menu.add(1, 1, 1, "Select All");
{
mnu2.setAlphabeticShortcut('s');
}
}
private boolean MenuChoice(MenuItem item) throws Exception {
switch (item.getItemId()) {
case 0:
if (getStrinValue != null) {
delhistory(getStrinValue);
} else {
Toast.makeText(getApplicationContext(),
"Please select an Item", Toast.LENGTH_SHORT).show();
}
case 1:
if (item.getTitle().equals("Select All")) {
for (int i = 0; i < lvhistory.getChildCount(); i++) {
RelativeLayout itemLayout = (RelativeLayout) lvhistory
.getChildAt(i);
final CheckBox cb = (CheckBox) itemLayout
.findViewById(R.id.check);
cb.setChecked(true);
if (cb.isChecked() == true) {
getStrinValue = getStrinValue + ","
+ cb.getTag().toString();
System.out.println("CHECKEDIITTEEMSS-->>>"
+ getStrinValue);
} else {
}
}
}
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
CreateMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
try {
return MenuChoice(item);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
private class MyAdapter extends ResourceCursorAdapter {
public MyAdapter(Context context, Cursor cur) {
super(context, R.layout.custom_sent_view, cur);
}
@Override
public View newView(Context context, Cursor cur, ViewGroup parent) {
LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return li.inflate(R.layout.custom_sent_view, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cur) {
TextView tvListText = (TextView) view.findViewById(R.id.Mobile);
chkBox = (CheckBox) view.findViewById(R.id.check);
tvListText.setText(cur.getString(cur
.getColumnIndex(MainscreenActivity.COL_Mobile)));
chkBox.setTag(cur.getString(cur
.getColumnIndex(MainscreenActivity.COL_Sent_id)));
chkBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CheckBox cb = (CheckBox) v;
if (cb.isChecked() == true) {
getStrinValue = getStrinValue + ","
+ cb.getTag().toString();
} else {
getStrinValue = null;
}
}
});
}
}
public void delhistory(String getStrinValue) {
int pos1 = getStrinValue.indexOf(",");
if (pos1 > 0) {
String rowId = getStrinValue.substring(pos1 + 1);
String delimiter = "\\,";
String[] sentID = rowId.split(delimiter);
for (int i = 0; i < sentID.length; i++) {
String temp0 = sentID[i];
int id = Integer.parseInt(temp0);
MainscreenActivity.JEEMAAndroSMSDB
.delete(MainscreenActivity.Table_SentHistory, "_id="
+ id, null);
}
Toast.makeText(getApplicationContext(),
"History deleted successfully", Toast.LENGTH_SHORT).show();
finish();
Intent intent = new Intent(getApplicationContext(),
SentHistoryActivity.class);
startActivity(intent);
}
}
private void CreateMenu(菜单菜单){
menu.setQwertyMode(true);
MenuItem mnu1=菜单。添加(0,0,0,“删除”);
{
mnu1.设置字母短切('a');
}
MenuItem mnu2=菜单。添加(1,1,1,“全选”);
{
mnu2.setalphalcshortcut('s');
}
}
私有布尔MenuChoice(MenuItem项)引发异常{
开关(item.getItemId()){
案例0:
if(getStrinValue!=null){
delhistory(getStrinValue);
}否则{
Toast.makeText(getApplicationContext(),
“请选择一个项目”,Toast.LENGTH_SHORT.show();
}
案例1:
if(item.getTitle().equals(“全选”)){
for(int i=0;i”
+getStrinValue);
}否则{
}
}
}
}
返回false;
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
super.onCreateOptions菜单(菜单);
创建菜单(菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
试一试{
返回菜单(项目);
}捕获(例外e){
e、 printStackTrace();
}
返回false;
}
私有类MyAdapter扩展ResourceCursorAdapter{
公共MyAdapter(上下文,游标cur){
超级(上下文,R.layout.custom\u sent\u view,cur);
}
@凌驾
公共视图新建视图(上下文上下文、光标cur、视图组父级){
LayoutInflater li=(LayoutInflater)getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
返回li.充气(R.layout.custom\u sent\u视图,父视图,false);
}
@凌驾
public void bindView(视图、上下文上下文、游标cur){
TextView tvListText=(TextView)view.findViewById(R.id.Mobile);
chkBox=(复选框)view.findViewById(R.id.check);
tvListText.setText(cur.getString(cur
.getColumnIndex(MainscreenActivity.COL_Mobile));
chkBox.setTag(cur.getString(cur
.getColumnIndex(MainscreenActivity.COL_Sent_id));
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
复选框cb=(复选框)v;
if(cb.isChecked()==true){
getStrinValue=getStrinValue+“,”
+cb.getTag().toString();
}否则{
getStrinValue=null;
}
}
});
}
}
public void delhistory(字符串getStrinValue){
int pos1=getStrinValue.indexOf(“,”);
如果(位置1>0){
String rowId=getStrinValue.substring(pos1+1);
字符串分隔符=“\\,”;
字符串[]sentID=rowId.split(分隔符);
for(int i=0;i
好的,我终于自己找到了答案。我将setonclicklistener添加到复选框中,以删除未选中的值。答案如下:
private boolean MenuChoice(MenuItem item) throws Exception {
switch (item.getItemId()) {
case 0:
if (getStrinValue != null) {
delhistory(getStrinValue);
} else {
Toast.makeText(getApplicationContext(),
"Please select an Item", Toast.LENGTH_SHORT).show();
}
case 1:
if (item.getTitle().equals("Select All")) {
for (int i = 0; i < lvhistory.getChildCount(); i++) {
RelativeLayout itemLayout = (RelativeLayout) lvhistory
.getChildAt(i);
final CheckBox cb = (CheckBox) itemLayout
.findViewById(R.id.check);
cb.setChecked(true);
if (cb.isChecked() == true) {
getStrinValue = getStrinValue + ","
+ cb.getTag().toString();
System.out.println("CHECKEDIITTEEMSS-->>>"
+ getStrinValue);
}
cb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (cb.isChecked() == false) {
getUnselected = cb.getTag().toString();
getStrinValue = getStrinValue.replace(","
+ getUnselected, "");
System.out.println("UNCHECKED--->>>"
+ getStrinValue);
} else if (cb.isChecked() == true) {
getStrinValue = getStrinValue + ","
+ cb.getTag().toString();
System.out.println("CHECKEDIITTEEMSS-->>>"
+ getStrinValue);
}
}
});
}
}
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
CreateMenu(menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
try {
return MenuChoice(item);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
private class MyAdapter extends ResourceCursorAdapter {
public MyAdapter(Context context, Cursor cur) {
super(context, R.layout.custom_sent_view, cur);
}
@Override
public View newView(Context context, Cursor cur, ViewGroup parent) {
LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return li.inflate(R.layout.custom_sent_view, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cur) {
TextView tvListText = (TextView) view.findViewById(R.id.Mobile);
chkBox = (CheckBox) view.findViewById(R.id.check);
tvListText.setText(cur.getString(cur
.getColumnIndex(MainscreenActivity.COL_Mobile)));
chkBox.setTag(cur.getString(cur
.getColumnIndex(MainscreenActivity.COL_Sent_id)));
chkBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CheckBox cb = (CheckBox) v;
if (cb.isChecked() == true) {
getStrinValue = getStrinValue + ","
+ cb.getTag().toString();
} else {
getStrinValue = null;
}
}
});
}
}
public void delhistory(String getStrinValue) {
int pos1 = getStrinValue.indexOf(",");
if (pos1 > 0) {
String rowId = getStrinValue.substring(pos1 + 1);
String delimiter = "\\,";
String[] sentID = rowId.split(delimiter);
for (int i = 0; i < sentID.length; i++) {
String temp0 = sentID[i];
int id = Integer.parseInt(temp0);
MainscreenActivity.JEEMAAndroSMSDB
.delete(MainscreenActivity.Table_SentHistory, "_id="
+ id, null);
}
Toast.makeText(getApplicationContext(),
"History deleted successfully", Toast.LENGTH_SHORT).show();
finish();
Intent intent = new Intent(getApplicationContext(),
SentHistoryActivity.class);
startActivity(intent);
}
}
private boolean MenuChoice(MenuItem项)引发异常{
开关(item.getItemId()){
案例0:
if(getStrinValue!=null){
delhistory(getStrinValue);
}否则{
Toast.makeText(getApplicationContext(),
“请选择一个项目”,Toast.LENGTH_SHORT.show();
}
案例1:
if(item.getTitle().equals(“全选”)){
for(int i=0;i