in my app I have to show event as invitation if we click the invitation the yes no maybe button will displayed and if we click the any of the button that colour of the button should change and it should hold the colour forever until we change the response(yes no maybe). here I posted my code
public class InvitationFragment extends Fragment {
LayoutInflater inflater;
ViewGroup container;
Bundle savedInstanceState;
private List<String> eventName = new ArrayList<>();
private List<Long> eventId = new ArrayList<>();
private List<String> eventPlace = new ArrayList<>();
private List<EventMO> eventMOs = new ArrayList<>();
private List<Long> eventUserId = new ArrayList<>();
private Context context;
private UserOccasions userOccasions;
private UserDelegate userDelegate = new UserDelegate();
private EventDelegates eventDelegates = new EventDelegates();
private Gson gson = new Gson();
private ProgressDialog prgDialog;
private UserMO userMO;
private CheckBox invitationCheckBox;
private ListView occasionView;
private DatabaseHelper dbHelper;
private View view;
private SharedPreferences sharedpreferences;
public boolean onOptionsItemSelected(MenuItem item) {
Log.d("onOptionsItemSelected", "yes");
switch (item.getItemId()) {
case R.id.menu_cancel_event:
displayInvitationList();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void displayInvitationList() {
int itemCount = occasionView.getCheckedItemCount();
for (int i = 1; i <= itemCount; i++) {
if (userOccasions.getCheckedInvitationCount() != null) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
// eventUserId = userOccasions.getCheckedInvitationCount();
// db.delete("user_relation", "EVENT_USER_ID" + " = ?", new String[]{Long.toString(eventUserId)});
db.close();
}
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
this.inflater = inflater;
this.container = container;
this.savedInstanceState = savedInstanceState;
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
final View view = inflater.inflate(R.layout.invitation_tab, container, false);
context = getActivity().getApplicationContext();
prgDialog = new ProgressDialog(getActivity());
eventId.clear();
eventName.clear();
eventPlace.clear();
// Set Progress Dialog Text
prgDialog.setMessage("Please wait...");
// Set Cancelable as False
prgDialog.setCancelable(false);
prgDialog.show();
DatabaseHelper dbHelper = new DatabaseHelper(context);
userMO = dbHelper.getRingeeUserData(1);
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... arg0) {
return eventDelegates.getAllEventForUser(userMO, context);
}
@Override
protected void onPostExecute(String eventLists) {
if (eventLists != "null") {
eventMOs = gson.fromJson(eventLists, new TypeToken<List<EventMO>>() {
}.getType());
Toast.makeText(context, "total items of eventMo" + eventMOs.size(), Toast.LENGTH_LONG).show();
for (EventMO eventMO : eventMOs) {
eventName.add(eventMO.getText());
eventId.add(eventMO.getEventId());
eventPlace.add(eventMO.getPlace());
}
DatabaseHelper dbHelper = new DatabaseHelper(context);
//long totalInsertion = dbHelper.insertUserRelationTable(userMOs);
prgDialog.dismiss();
//Toast.makeText(context, "total userMos size " + userMOs.size() + "total db insertion size " + totalInsertion, Toast.LENGTH_LONG).show();
occasionView = (ListView) view.findViewById(R.id.invitation_list_view);
userOccasions = new UserOccasions();
occasionView.setAdapter(userOccasions);
occasionView.setItemsCanFocus(false);
occasionView.setTextFilterEnabled(true);
occasionView.setOnItemClickListener(occasionView.getOnItemClickListener());
}
}
}.execute(null, null, null);
return view;
}
private class UserOccasions extends BaseAdapter {
LayoutInflater mInflater;
TextView eventNameTxtV, eventPlaceTxtV;
private ArrayList<EventMO> checkedInvitationItems;
private Object invitationTag;
UserOccasions() {
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.checkedInvitationItems = new ArrayList<EventMO>();
}
@Override
public int getCount() {
return eventMOs.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return 0;
}
// show list values name and mobile number in contact page
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (null == convertView) {
convertView = mInflater.inflate(R.layout.invitation, null);
}
eventNameTxtV = (TextView) convertView.findViewById(R.id.invitationTitle);
eventPlaceTxtV = (TextView) convertView.findViewById(R.id.invitationPlace);
eventNameTxtV.setText(eventMOs.get(position).getText());
eventPlaceTxtV.setText(eventMOs.get(position).getPlace());
// intializing variables
final EventMO eventMO = eventMOs.get(position);
convertView.setTag(position);
View v = convertView.findViewById(R.id.invitation_single);
final LinearLayout eventLayout = (LinearLayout) convertView.findViewById(R.id.invitation_single);
invitationCheckBox = (CheckBox) convertView.findViewById(R.id.invitationCheckBox);
Button yesBtn = (Button) convertView.findViewById(R.id.yesButton);
Button noBtn = (Button) convertView.findViewById(R.id.noButton);
Button maybeBtn = (Button) convertView.findViewById(R.id.buttonMayBe);
final LinearLayout responseLayout = (LinearLayout) convertView.findViewById(R.id.hidden);
invitationCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
checkedInvitationItems.add((EventMO) eventMO);
} else {
checkedInvitationItems.remove((EventMO) eventMO);
}
}
});
//Based on the user click, response will be stored
yesBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
responseLayout.setVisibility(View.GONE);
//If user clicks yes button in invitation response layout,response would be stored as 1 for event user
final int response = 1;
final long eventId = eventMOs.get(position).getEventId();
userMO.setIsAttending(response);
new AsyncTask<Void, Void, String>() {
protected String doInBackground(Void... arg0) {
return userDelegate.updateEventUserRelationShipMapping(userMO, eventId);
}
}.execute(null, null, null);
}
});
noBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
responseLayout.setVisibility(View.GONE);
//If user clicks no button in invitation response layout,response would be stored as 0 for event user
final int response = 0;
final long eventId = eventMOs.get(position).getEventId();
userMO.setIsAttending(response);
new AsyncTask<Void, Void, String>() {
protected String doInBackground(Void... arg0) {
return userDelegate.updateEventUserRelationShipMapping(userMO, eventId);
}
}.execute(null, null, null);
}
});
maybeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
responseLayout.setVisibility(View.GONE);
//If user clicks maybe button in invitation response layout,response would be stored as for event user
final int response = 2;
userMO.setIsAttending(response);
final long eventId = eventMOs.get(position).getEventId();
new AsyncTask<Void, Void, String>() {
protected String doInBackground(Void... arg0) {
return userDelegate.updateEventUserRelationShipMapping(userMO, eventId);
}
}.execute(null, null, null);
}
});
eventLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.invitation_single:
responseLayout.setVisibility(View.VISIBLE);
break;
}
}
});
return convertView;
}
public ArrayList<EventMO> getCheckedInvitationCount() {
return this.checkedInvitationItems;
}
}
}
here I have tried the following code for change the colour of the button when the button clicked but it will not hold the colour when we go back and return back to the button and it will work for all events
yesBtn.setbackgroundColor(color.Yellow);
noBtn.setbackgroundColor(color.blue);
maybeBtn.setbackgroundColor(color.blue);
the above mentioned code is under yesBtn.oncliclListener() method
here how to use shared preference to solve that issue
You can store color in shared preference as Int. But as a suggestion , you need not store color , but some flag value 1,2,3,etc and based on that value you can set your color on the button
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.