For this tutorial you need to have :-
- Dialog design view_item.xml
- MyDialogFragment.java class
- OnClick Event to call dialog.
- Announcement.java Class
- AnnouncementHelper Class
- OnCreateView Method
view_item.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="horizontal" android:padding="5dip" android:id="@+id/Announcement" android:transitionGroup="false"> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:layout_marginRight="4dip" android:src="@drawable/icon" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical" android:textStyle="bold" android:singleLine="false" android:ellipsize="end" /> <TextView android:id="@+id/datepublish" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical" android:singleLine="false" android:ellipsize="end" /> <TextView android:id="@+id/summarycontent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center_vertical" android:singleLine="false" android:ellipsize="end" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Close Announcement" android:id="@+id/button" android:layout_gravity="fill_horizontal" /> </LinearLayout> </LinearLayout> </RelativeLayout>
MyDialogFragment.java
public class MyDialogFragment extends DialogFragment { int mNum; int AnnouncementKey; /** * Create a new instance of MyDialogFragment, providing "num" * as an argument. */ static MyDialogFragment newInstance(int num,int mAnnouncementKey) { MyDialogFragment f = new MyDialogFragment(); // Supply num input as an argument. Bundle args = new Bundle(); args.putInt("num", num); args.putInt("announceKey", mAnnouncementKey); f.setArguments(args); return f; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mNum = getArguments().getInt("num"); AnnouncementKey = getArguments().getInt("announceKey"); // Pick a style based on the num. int style = DialogFragment.STYLE_NORMAL, theme = 0; switch ((mNum-1)%6) { case 1: style = DialogFragment.STYLE_NO_TITLE; break; case 2: style = DialogFragment.STYLE_NO_FRAME; break; case 3: style = DialogFragment.STYLE_NO_INPUT; break; case 4: style = DialogFragment.STYLE_NORMAL; break; case 5: style = DialogFragment.STYLE_NORMAL; break; case 6: style = DialogFragment.STYLE_NO_TITLE; break; case 7: style = DialogFragment.STYLE_NO_FRAME; break; case 8: style = DialogFragment.STYLE_NORMAL; break; } switch ((mNum-1)%6) { case 4: theme = android.R.style.Theme_Holo; break; case 5: theme = android.R.style.Theme_Holo_Light_Dialog; break; case 6: theme = android.R.style.Theme_Holo_Light; break; case 7: theme = android.R.style.Theme_Holo_Light_Panel; break; case 8: theme = android.R.style.Theme_Holo_Light; break; } setStyle(style, theme); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.activity_view_announcemnet, container, false); //View tv = v.findViewById(R.id.text); if(AnnouncementKey != 0) { AnnounceHelper AnnHelper = new AnnounceHelper(v.getContext()); Announcements ann = AnnHelper.GetAnnouncement(AnnouncementKey); if (!ann.getAnnouncementTitle().equals("")) { TextView title = (TextView)v.findViewById(R.id.title); TextView datepublish = (TextView)v.findViewById(R.id.datepublish); TextView summary = (TextView) v.findViewById(R.id.summarycontent); ImageView icon = (ImageView)v.findViewById(R.id.icon); title.setText(ann.getAnnouncementTitle()); datepublish.setText(getDateTime(ann.getAnnouncementPublishDateTime())); summary.setText(ann.getAnnouncementContent()); Button button = (Button)v.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dismiss(); } }); } } return v; } private String getDateTime(Date passedDate) { SimpleDateFormat dateFormat = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss", Locale.getDefault()); return dateFormat.format(passedDate); } }
OnClick Event to call dialog.
private AdapterView.OnItemClickListener onListClick = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Announcements r = model.get(position);
//Intent inent = new Intent(getActivity(), ViewAnnouncemnet.class);
//inent.putExtra("AnnouncementKey",r.getAnnouncementKey());
//startActivity(inent);
showDialog(r);
}
};
void showDialog(Announcements passedParameter) {
// DialogFragment.show() will take care of adding the fragment
// in a transaction. We also want to remove any currently showing
// dialog, so make our own transaction and take care of that here.
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
// Create and show the dialog.
DialogFragment newFragment = MyDialogFragment.newInstance(7,passedParameter.getAnnouncementKey());
newFragment.show(ft, "dialog");
}
Announcement.java Class
public class Announcements { private Integer AnnouncementKey; private String AnnouncementTitle; private String AnnouncementContent; private Date AnnouncementPublishDateTime; private String AnnounceError; public Announcements() { AnnounceError = ""; AnnouncementKey = 0; AnnouncementTitle = ""; AnnouncementContent = ""; setAnnouncementPublishDateTime(new Date()); } public String getContentSummary(){ if(getAnnouncementContent().length() > 50) { return getAnnouncementContent().substring(0, 50); }else{ return getAnnouncementContent(); } } public String toString(){ return "Title : " + getAnnouncementTitle() + ", Content : " + getAnnouncementContent() + ", Publish DateTime : " + getAnnouncementPublishDateTime().toString(); } public String getAnnouncementTitle() { return AnnouncementTitle; } public void setAnnouncementTitle(String announcementTitle) { AnnouncementTitle = announcementTitle; } public String getAnnouncementContent() { return AnnouncementContent; } public void setAnnouncementContent(String announcementContent) { AnnouncementContent = announcementContent; } public Date getAnnouncementPublishDateTime() { return AnnouncementPublishDateTime; } public void setAnnouncementPublishDateTime(Date announcementPublishDateTime) { AnnouncementPublishDateTime = announcementPublishDateTime; } public String getAnnounceError() { return AnnounceError; } public void setAnnounceError(String announceError) { AnnounceError = announceError; } public Integer getAnnouncementKey() { return AnnouncementKey; } public void setAnnouncementKey(Integer announcementKey) { AnnouncementKey = announcementKey; } }
AnnouncementHelper.java class
public class AnnounceHelper extends SQLiteOpenHelper {
// UserDetails table name
private static final String TABLE_ANNOUNCEMENT = "Announcement";
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "ApplyLeave";
private static final String[] COLUMNS = {"AnnouncementKey","AnnouncementTitle","AnnouncementContent","AnnouncementPublishDateTime"};
public AnnounceHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
createTable();
}
private void createTable(){
SQLiteDatabase db = this.getWritableDatabase();
onCreate(db);
}
@Override
public void onCreate(SQLiteDatabase db) {
// SQL statement to create book table
String CREATE_ANNOUNCEMENT_TABLE = " CREATE TABLE IF NOT EXISTS " + TABLE_ANNOUNCEMENT + " ( " +
"AnnouncementKey INTEGER PRIMARY KEY AUTOINCREMENT, " +
"AnnouncementTitle TEXT, " +
"AnnouncementContent TEXT," +
"AnnouncementPublishDateTime DATETIME DEFAULT CURRENT_TIMESTAMP )";
// create books table
db.execSQL(CREATE_ANNOUNCEMENT_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older UsersDetails table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_ANNOUNCEMENT);
// create fresh UsersDetails table
this.onCreate(db);
}
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion){
// Drop older UsersDetails table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_ANNOUNCEMENT);
// create fresh UsersDetails table
this.onCreate(db);
}
public Announcements SetDummyAnnouncement(){
Announcements DummyAnnouncement = new Announcements();
DummyAnnouncement.setAnnouncementTitle("Welcome To Announcement");
DummyAnnouncement.setAnnouncementContent("This is Announcement v1.0 application.\n\nDeveloper Name : \nSw Engineering Code Developer");
DummyAnnouncement.setAnnouncementPublishDateTime(new Date());
CreateAnnouncement(DummyAnnouncement);
Announcements testAnno = new Announcements();
testAnno.setAnnouncementTitle("This is second announcement");
testAnno.setAnnouncementContent("This is the second Content summary");
testAnno.setAnnouncementPublishDateTime(new Date());
CreateAnnouncement(testAnno);
return DummyAnnouncement;
}
public List<Announcements> GetAllAnnouncement() throws SQLiteException{
List<Announcements> AllAnnouncement = new LinkedList<>();
try {
String query = "SELECT * FROM " + TABLE_ANNOUNCEMENT;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
Announcements detail = null;
if (cursor.moveToFirst()) {
do {
detail = new Announcements();
detail.setAnnouncementKey(Integer.parseInt(cursor.getString(0)));
detail.setAnnouncementTitle(cursor.getString(1));
detail.setAnnouncementContent(cursor.getString(2));
detail.setAnnouncementPublishDateTime(getDateTime(cursor.getString(3)));
AllAnnouncement.add(detail);
} while (cursor.moveToNext());
}
} catch (Exception ex){
Announcements detail = new Announcements();
detail.setAnnounceError(ex.getMessage());
AllAnnouncement.add(detail);
}
return AllAnnouncement;
}
public Boolean DeleteAllAnnouncement(){
Boolean isSuccessful = false;
Announcements ann = new Announcements();
try {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_ANNOUNCEMENT,"",null);
db.close();
isSuccessful = true;
} catch (Exception ex){
ann.setAnnounceError(ex.getMessage());
}
return isSuccessful;
}
public Announcements GetAnnouncement(int key){
Announcements NewAnnouncement = new Announcements();
SQLiteDatabase db = this.getReadableDatabase();
// 2. build query
Cursor cursor =
db.query(TABLE_ANNOUNCEMENT,COLUMNS," AnnouncementKey = ?", new String[] { String.valueOf(key) },
null, // e. group by
null, // f. having
null, // g. order by
null); // h. limit
if (cursor != null && cursor.getCount() > 0){
cursor.moveToFirst();
NewAnnouncement.setAnnouncementKey(Integer.parseInt(cursor.getString(0)));
NewAnnouncement.setAnnouncementTitle(cursor.getString(1));
NewAnnouncement.setAnnouncementContent(cursor.getString(2));
NewAnnouncement.setAnnouncementPublishDateTime(getDateTime(cursor.getString(3)));
}
return NewAnnouncement;
}
public Boolean CreateAnnouncement(Announcements Announcement) throws SQLiteException {
Boolean successful = false;
try {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("AnnouncementTitle", Announcement.getAnnouncementTitle());
values.put("AnnouncementContent", Announcement.getAnnouncementContent());
values.put("AnnouncementPublishDateTime",getDateTime(Announcement.getAnnouncementPublishDateTime()));
long rowEfected = db.insert(TABLE_ANNOUNCEMENT, null,values);
db.close();
if(rowEfected > 0){
successful = true;
}else{
successful = false;
}
}
catch(Exception ex){
Announcement.setAnnounceError(ex.getMessage());
return false;
}
return successful;
}
private String getDateTime() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MM-yyyy HH:mm:ss", Locale.getDefault());
Date date = new Date();
return dateFormat.format(date);
}
private String getDateTime(Date passedDate) {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MM-yyyy HH:mm:ss", Locale.getDefault());
return dateFormat.format(passedDate);
}
private Date getDateTime(String passedDateString) {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MM-yyyy HH:mm:ss", Locale.getDefault());
Date date = new Date();
try {
date = dateFormat.parse(passedDateString);
}catch (Exception ex){
//do nothing
}
return date;
}
}
OnCreateView Method
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Boolean setDummy = false;
AnnounceHelper AnnSQLHelper = new AnnounceHelper(getActivity());
model.clear();
List<Announcements> AllAnnouncement = AnnSQLHelper.GetAllAnnouncement();
if(AllAnnouncement.size() > 0){
//check if first announcement get error
Announcements firstElement = AllAnnouncement.get(0);
if(CheckError(firstElement,true)) {
firstElement = AnnSQLHelper.SetDummyAnnouncement();
setDummy = true;
}else{
try {
ListView list = (ListView)getView().findViewById(R.id.listView);
if(list != null) {
list.setAdapter(null);
adapter = null;
adapter = new AnnouncementAdapter();
adapter.notifyDataSetChanged();
list.setAdapter(adapter);
list.setOnItemClickListener(onListClick);
for (int i = 0; i < AllAnnouncement.size(); i++) {
Announcements ann = AllAnnouncement.get(i);
adapter.add(ann);
}
}else{
ShowMessage("List is null","Info");
}
}catch (Exception ex){
ShowMessage(ex.getMessage(),"Error");
}
}
}else {
Announcements firstElement = AnnSQLHelper.SetDummyAnnouncement();
CheckError(firstElement,true);
setDummy = true;
}
if(setDummy){
AllAnnouncement = AnnSQLHelper.GetAllAnnouncement();
if(AllAnnouncement.size() > 0){
try {
ListView list = (ListView)getView().findViewById(R.id.listView);
if(list != null) {
list.setAdapter(null);
adapter = null;
adapter = new AnnouncementAdapter();
adapter.notifyDataSetChanged();
list.setAdapter(adapter);
list.setOnItemClickListener(onListClick);
for (int i = 0; i < AllAnnouncement.size(); i++) {
Announcements ann = AllAnnouncement.get(i);
adapter.add(ann);
}
}else{
ShowMessage("List is null","Info");
}
}catch (Exception ex){
ShowMessage(ex.getMessage(),"Error");
}
}
}
}
Note : To understand this example, you need to have basic Java knowledge.
By Mohd Zulkamal
NOTE : – If You have Found this post Helpful, I will appreciate if you can Share it on Facebook, Twitter and Other Social Media Sites. Thanks =)
0 comments:
Post a Comment