无法更改recyclerview android中的图标
我正在开发一个小应用程序,我在其中设置了一个通知,每当用户单击recyclerview中的通知图标图像时,通知就会触发,同时我想用通知开始图标替换通知图标 再次,如果用户单击通知开始图标,我想将图标更改为通知停止图标 请让我们知道如何才能做到这一点。谢谢你的帮助 请找到下面的截图和相同的代码 1) 启动应用程序时recyclerview的屏幕截图 2) 如果用户第一次单击通知图标,我想将图标更改为通知开始图标 3) 再次,如果用户单击通知开始图标,我想将图标更改为通知停止图标 1) Recyclerview xml:无法更改recyclerview android中的图标,android,android-recyclerview,icons,Android,Android Recyclerview,Icons,我正在开发一个小应用程序,我在其中设置了一个通知,每当用户单击recyclerview中的通知图标图像时,通知就会触发,同时我想用通知开始图标替换通知图标 再次,如果用户单击通知开始图标,我想将图标更改为通知停止图标 请让我们知道如何才能做到这一点。谢谢你的帮助 请找到下面的截图和相同的代码 1) 启动应用程序时recyclerview的屏幕截图 2) 如果用户第一次单击通知图标,我想将图标更改为通知开始图标 3) 再次,如果用户单击通知开始图标,我想将图标更改为通知停止图标 1) Rec
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="65dp"
android:elevation="10dp"
android:background="#E0F2F1"
android:orientation="horizontal"
tools:ignore="UnusedAttribute">
<ImageView
android:padding="16dp"
android:id="@+id/listIcon"
android:tint="#FF5722"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_adjust_black_24dp"
tools:ignore="ContentDescription" />
<TextView
android:padding="8dp"
android:id="@+id/item_name"
android:textSize="17dp"
android:text="Dummy text"
android:layout_gravity="center"
android:fontFamily="Roboto Regular"
android:textColor="#000"
android:layout_width="250dp"
android:layout_height="wrap_content"
tools:ignore="HardcodedText,SpUsage" />
<ImageView
android:padding="16dp"
android:id="@+id/listIcon1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:src="@drawable/ic_notifications_off_black_24dp"
tools:ignore="ContentDescription,RtlHardcoded" />
</LinearLayout>
2) 回收视图适配器
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ItemHolder> {
Context c;
ArrayList<Habits> habits;
private LayoutInflater layoutInflater;
TextView textItemName;
ImageView imageView, imageView1;
FragmentManager fm;
private ItemCLickCallBack itemCLickCallBack;
EditText Remainder;
Time t = new Time();
public interface ItemCLickCallBack {
void onItemClick();
}
public void setItemCLickCallBack(final ItemCLickCallBack itemCLickCallBack) {
this.itemCLickCallBack = itemCLickCallBack;
}
public RecyclerViewAdapter(Context context, ArrayList<Habits> habits) {
layoutInflater = LayoutInflater.from(context);
this.habits = habits;
this.c = context;
}
@Override
public RecyclerViewAdapter.ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = layoutInflater.inflate(R.layout.layout_item, parent, false);
return new ItemHolder(itemView);
}
@Override
public void onBindViewHolder(final RecyclerViewAdapter.ItemHolder holder, int position) {
final Habits item = habits.get(position);
holder.textItemName.setText(item.getName());
textItemName = (TextView) holder.textItemName.findViewById(R.id.item_name);
imageView = (ImageView) holder.imageView.findViewById(R.id.listIcon1);
holder.setItemClickListener(new ItemClickListener() {
@Override
public void onItemClick(View v, final int pos) {
if (v.getId() == textItemName.getId()) {
Intent i = new Intent(c, SecondActivity.class);
c.startActivity(i);
}
if (v.getId() == imageView.getId()) {
LayoutInflater li = LayoutInflater.from(c);
View dialogView = li.inflate(R.layout.edit_dialogue, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
c);
alertDialogBuilder.setTitle("Edit Your Habit");
alertDialogBuilder.setIcon(R.drawable.ic_edit_black_18dp);
alertDialogBuilder.setView(dialogView);
final EditText EdiTime = (EditText) dialogView
.findViewById(R.id.editTime);
final EditText EditHabit = (EditText) dialogView
.findViewById(R.id.edithabit);
final EditText Remainder = (EditText) dialogView.
findViewById(R.id.interval);
Remainder.setText(item.getInterval());
EditHabit.setText((CharSequence) item.getName());
EdiTime.setText(editTimeText());
EdiTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Calendar mcurrentTime = Calendar.getInstance();
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
int minute = mcurrentTime.get(Calendar.MINUTE);
TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(c, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hour, int minute) {
mcurrentTime.set(Calendar.HOUR_OF_DAY, hour);
mcurrentTime.set(Calendar.MINUTE, minute);
Intent intent = new Intent(c, Notification_reciever.class);
intent.putExtra("HABIT_KEY",item.getName());
PendingIntent pendingIntent = PendingIntent.getBroadcast(c, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) c.getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, mcurrentTime.getTimeInMillis(),Integer.parseInt(Remainder.getText().toString())*60*1000, pendingIntent);
}
}, hour, minute, false);
mTimePicker.setTitle("Select Time");
mTimePicker.show();
}
});
alertDialogBuilder
.setCancelable(false)
.setPositiveButton("SAVE",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
update(item.getId(), EditHabit.getText().toString(), t.getHour(), t.getMinute(), Remainder.getText().toString());
itemCLickCallBack.onItemClick();
}
})
.setNegativeButton("DELETE",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
delete(item.getId());
itemCLickCallBack.onItemClick();
notifyDataSetChanged();
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
});
}
@Override
public int getItemCount() {
return habits.size();
}
class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private ImageView imageView, imageView1;
private TextView textItemName;
ItemClickListener itemClickListener;
public ItemHolder(View itemView) {
super(itemView);
textItemName = (TextView) itemView.findViewById(R.id.item_name);
imageView = (ImageView) itemView.findViewById(R.id.listIcon1);
imageView.setOnClickListener(this);
textItemName.setOnClickListener(this);
}
public void setItemClickListener(ItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
@Override
public void onClick(View v) {
this.itemClickListener.onItemClick(v, getLayoutPosition());
}
}
private void update(int id, String name, int hour, int minute, String interval) {
DBAdapter db = new DBAdapter(c);
db.openDB();
long result = db.update(id, name, hour, minute, interval);
if (result > 0) {
Toast.makeText(c, "Saved successfully", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(c, "failed", Toast.LENGTH_LONG).show();
}
db.closeDB();
}
private void delete(int id) {
DBAdapter db = new DBAdapter(c);
db.openDB();
long result = db.delete(id);
db.closeDB();
if (result > 0) {
Toast.makeText(c, "Deleted successfully", Toast.LENGTH_LONG).show();
}
}
公共类RecycleServiceAdapter扩展了RecyclerView.Adapter{
上下文c;
ArrayList习惯;
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
TextView textItemName;
ImageView ImageView,imageView1;
碎片管理器fm;
私有项ClickCallback项ClickCallback;
编辑文本余数;
时间t=新时间();
公共接口项ClickCallback{
void onite mclick();
}
公共无效设置项ClickCallback(最终项ClickCallback项ClickCallback){
this.itemCLickCallBack=itemCLickCallBack;
}
公共RecycleServiceAdapter(上下文、数组列表习惯){
layoutInflater=layoutInflater.from(上下文);
这就是习惯;
c=上下文;
}
@凌驾
public RecycleServiceAdapter.ItemHolder onCreateViewHolder(视图组父级,int-viewType){
视图项视图=布局更平坦。充气(R.layout.layout\u项,父项,false);
返回新的ItemHolder(itemView);
}
@凌驾
BindViewHolder上的公共无效(最终RecycleServiceAdapter.ItemHolder,int位置){
最终习惯项=习惯。获取(位置);
holder.textItemName.setText(item.getName());
textItemName=(TextView)holder.textItemName.findViewById(R.id.item\u name);
imageView=(imageView)holder.imageView.findViewById(R.id.listIcon1);
setItemClickListener(新的ItemClickListener(){
@凌驾
公共区域(视图v,最终内部位置){
如果(v.getId()==textItemName.getId()){
意向i=新意向(c,SecondActivity.class);
c、 星触觉(i);
}
如果(v.getId()==imageView.getId()){
LayoutInflater li=LayoutInflater.from(c);
视图对话框视图=li.充气(R.layout.edit\u对话框,空);
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(
c) );
setTitle(“编辑你的习惯”);
alertDialogBuilder.setIcon(R.drawable.ic_edit_black_18dp);
alertDialogBuilder.setView(dialogView);
最终编辑文本编辑时间=(编辑文本)对话框视图
.findviewbyd(R.id.editTime);
最终编辑文本编辑习惯=(编辑文本)对话框视图
.findviewbyd(R.id.editbyid);
最终EditText余数=(EditText)对话框视图。
findViewById(R.id.interval);
余数.setText(item.getInterval());
setText((CharSequence)item.getName());
setText(editTimeText());
EdiTime.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
最终日历mcurrentTime=Calendar.getInstance();
int hour=mcurrentTime.get(Calendar.hour\u OF\u DAY);
int minute=mcurrentTime.get(Calendar.minute);
时间选择器Dialog mTimePicker;
mTimePicker=newtimepickerdialog(c,newtimepickerdialog.OnTimeSetListener(){
@凌驾
公共void onTimeSet(计时器选择器计时器选择器,整数小时,整数分钟){
mcurrentTime.set(Calendar.HOUR\u OF_DAY,HOUR);
mcurrentTime.set(Calendar.MINUTE,MINUTE);
意向意向=新意向(c,通知接收者类);
intent.putExtra(“习惯键”,item.getName());
pendingent pendingent=pendingent.getBroadcast(c,100,intent,pendingent.FLAG_UPDATE_CURRENT);
AlarmManager AlarmManager=(AlarmManager)c.getSystemService(报警服务);
alarmManager.setRepeating(alarmManager.RTC_唤醒,mcurrentTime.getTimeInMillis(),Integer.parseInt(余数.getText().toString())*60*1000,PendingContent);
}
},小时,分钟,错误);
setTitle(“选择时间”);
mTimePicker.show();
}
});
alertDialogBuilder
.setCancelable(错误)
.setPositiveButton(“保存”,
新建DialogInterface.OnClickListener(){
公共void onClick(对话框接口对话框,
int id){
更新(item.getId()、editHabity.getText().toString()、t.getHour()、t.getMinute()、rements.getText().toString());
itemCLickCallBack.onItemClick();
}
})
.setNegativeButton(“删除”,
新建DialogInterface.OnClickListener(){
公共空间