Android ToDo list app. (4)
ToDoAdapter - getView - Not Showing Urgent Red background with White letter when Urgent Switch is Selected.
MainActivity
package com.example.androidlabs;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.Objects;
public class MainActivity extends AppCompatActivity {
private ArrayList<TodoItem> items;
private ToDoAdapter itemsAdapter;
private ListView listViewID1;
private Button buttonAdd1;
private EditText todoEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//remove
Objects.requireNonNull(getSupportActionBar()).setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.purple_700)));
setContentView(R.layout.activity_main1);
//leave this to block title bar
listViewID1 = findViewById(R.id.listViewID1);
buttonAdd1 = findViewById(R.id.buttonAdd1);
todoEditText = findViewById(R.id.todo_editText1);
listViewID1 = findViewById(R.id.listViewID1);
buttonAdd1 = findViewById(R.id.buttonAdd1);
todoEditText = findViewById(R.id.todo_editText1);
items = new ArrayList<>();
itemsAdapter = new ToDoAdapter(this, items);
listViewID1.setAdapter(itemsAdapter);
buttonAdd1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addItem(view);
}
});
}//End of onCreate
private void addItem(View view) {
String itemText = todoEditText.getText().toString();
if (!itemText.isEmpty()) {
boolean isUrgent = false; // Set isUrgent to the appropriate value
TodoItem newItem = new TodoItem(itemText, isUrgent);
items.add(newItem);
itemsAdapter.notifyDataSetChanged();
todoEditText.setText("");
} else {
Toast.makeText(getApplicationContext(), "Please enter text", Toast.LENGTH_LONG).show();
}
}
}//End of MainActivity
____________________________________________________________________________________________________
ToDoAdapter
package com.example.androidlabs;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class ToDoAdapter extends BaseAdapter {
private Context context;
private ArrayList<TodoItem> itemList;
public ToDoAdapter(Context context, ArrayList<TodoItem> itemList) {
this.context = context;
this.itemList = itemList;
}
@Override
public int getCount() {
return itemList.size();
}
@Override
public Object getItem(int position) {
return itemList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.activity_list_view2, parent, false);
}
TextView textView = convertView.findViewById(R.id.textView);
TodoItem item = itemList.get(position);
textView.setText(item.getText());
if (item.isUrgent()) {
convertView.setBackgroundColor(Color.RED);
textView.setTextColor(Color.WHITE);
} else {
convertView.setBackgroundColor(Color.TRANSPARENT);
textView.setTextColor(Color.BLACK);
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDeleteConfirmDialog(position);
}
});
return convertView;
}
public void showDeleteConfirmDialog(final int position) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Do you want to delete this?");
builder.setMessage("The selected row is: " + position);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
itemList.remove(position);
notifyDataSetChanged();
}
});
builder.setNegativeButton("No", null);
builder.show();
}
}
__________________________________________________________________________________________________
TodoItem
package com.example.androidlabs;
public class TodoItem {
private String text;
private boolean isUrgent;
public TodoItem(String text, boolean isUrgent) {
this.text = text;
this.isUrgent = isUrgent;
}
public String getText() {
return text;
}
public boolean isUrgent() {
return isUrgent;
}
}