使用警报对话框的颜色 ListView 项目 android
Color ListView item using alert dialog android
我想为列表视图中的项目着色。当我单击列表视图中的项目时,警报对话框显示然后如果您在对话框中使用 setChoiceMode multiple 单击是,它会为项目着色,问题是每当我在警报对话框显示列表视图项目已经着色之前单击该项目,请检查这个,我只是android的新手,谢谢
MainActivity.java
text_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
isSelected[position]=!isSelected[position];
alert_dialog();
}
});
}
public void alert_dialog(){
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Are you sure you want to color this item?")
.setMessage("Please Confirm")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
text_listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getApplicationContext(),"Nothing Happened",Toast.LENGTH_LONG).show();
}
})
.show();
}
myselecter
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/lightOrange" android:state_activated="true"/>
</selector>
arrayadapter
ArrayList<String> list_items = new ArrayList<String>();
ArrayAdapter arrayAdapter;
private boolean[] isSelected; //declaration
arrayAdapter = new ArrayAdapter(this,R.layout.list_item, list_items);
text_listview.setAdapter(arrayAdapter);
isSelected=new boolean[arrayAdapter.getCount()];
您应该在对话框中单击“是”后设置选择。像这样修改您的代码。
text_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
alert_dialog(position);
}
});
}
public void alert_dialog(final int position){
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Are you sure you want to color this item?")
.setMessage("Please Confirm")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
isSelected[position]=true;
text_listview.setItemChecked(position,true); //Setting selected state here
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
isSelected[position]=false;
text_listview.setItemChecked(position,false);
Toast.makeText(getApplicationContext(),"Nothing Happened",Toast.LENGTH_LONG).show();
}
})
.show();
}
我想为列表视图中的项目着色。当我单击列表视图中的项目时,警报对话框显示然后如果您在对话框中使用 setChoiceMode multiple 单击是,它会为项目着色,问题是每当我在警报对话框显示列表视图项目已经着色之前单击该项目,请检查这个,我只是android的新手,谢谢
MainActivity.java
text_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
isSelected[position]=!isSelected[position];
alert_dialog();
}
});
}
public void alert_dialog(){
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Are you sure you want to color this item?")
.setMessage("Please Confirm")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
text_listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getApplicationContext(),"Nothing Happened",Toast.LENGTH_LONG).show();
}
})
.show();
}
myselecter
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/lightOrange" android:state_activated="true"/>
</selector>
arrayadapter
ArrayList<String> list_items = new ArrayList<String>();
ArrayAdapter arrayAdapter;
private boolean[] isSelected; //declaration
arrayAdapter = new ArrayAdapter(this,R.layout.list_item, list_items);
text_listview.setAdapter(arrayAdapter);
isSelected=new boolean[arrayAdapter.getCount()];
您应该在对话框中单击“是”后设置选择。像这样修改您的代码。
text_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
alert_dialog(position);
}
});
}
public void alert_dialog(final int position){
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Are you sure you want to color this item?")
.setMessage("Please Confirm")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
isSelected[position]=true;
text_listview.setItemChecked(position,true); //Setting selected state here
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
isSelected[position]=false;
text_listview.setItemChecked(position,false);
Toast.makeText(getApplicationContext(),"Nothing Happened",Toast.LENGTH_LONG).show();
}
})
.show();
}