Sei sulla pagina 1di 6

LookupDialogFragment3 extends DialogFragment

Private Members
SimpleCursorAdapter adapter
ListView listView
LookupListener listener
SQLiteDatabase database
LookupSetting lookupSetting
LookupParameters3 parameters
bool isValid

Overrides and Implementation


onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState)
-

View returnValue = inflater.inflate(getLayoutResourceId(), container, false) =


R.layout.generic_search_list;
listView = (ListView) returnValue.findViewById(android.R.id.list);
listView.setOnItemClickListener(selectItemListener);
initialise and set on click listeners to: cancelButton, clearButton, searchText
return returnValue

onActivityCreated(Bundle arg0)
-

call super.onActivityCreated(arg0)
Bundle args = getArguments();
isValid = true;
if args contains Constants.ITEM key
o set parameters = args.getSerializable(Constants.ITEM) as LookupParameters3
o getDialog().setTitle from parameters.label
o set isValid = getLookupSetting (getLookupSetting = returns true if
parameters.getLookupSetting is not null and LookupSetting table exist in
database
adapter = buildAdapter();
if isValid, loadLookupData(null);

onResume()
-

call super.onResume();
listView.setAdapter(adapter);

Methods
public SimpleCursorAdapter buildAdapter()
-

if use 2 columns (lookupSetting) return buildTwoLineAdapter()


else return buildOneLineAdapter()

layout/generic_search_list
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true" >
<FrameLayout
android:id="@+id/top_host"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<EditText
android:id="@+id/search_text"
android:layout_width="fill_parent"
android:layout_height="48dp"
android:hint="@string/search"
android:imeOptions="actionDone"
android:inputType="textFilter"
android:paddingLeft="48dp"
android:paddingRight="32dp"
android:singleLine="true"
android:windowSoftInputMode="stateHidden" >
</EditText>
<Button
android:id="@+id/search_button"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="left|center_vertical"
android:layout_margin="8dp"
android:background="@drawable/ic_menu_search" />
<Button
android:id="@+id/clear_text"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="right|center_vertical"
android:layout_margin="12dp"
android:background="@drawable/ic_menu_remove" />
</FrameLayout>
<Button
android:id="@+id/cancel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Cancel" />
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/cancel"
android:layout_below="@id/top_host" />
</RelativeLayout>

DatabaseManagerFragment extends ListFragment


Private Members
private ExpandableListView publicationsListView;
private ExpandablePublicationAdapter adapter;
//ExpandablePublicationAdapter extends BaseExpandableListAdapter, which is the base class for
ExpandableListAdapter

private List<Publication> serverPublications, devicePublications;

Overrides and Implementation


onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState)
-

View returnValue = inflater.inflate(R.layout.database_manager, container, false);


publicationsListView = returnValue.findByViewId(android.R.id.list) as
ExpandableListView
noNetworkTextView = returnValue.findByViewId(R.id.no_internet_connection) as
TextView
return returnValue

onActivityCreated(Bundle savedInstanceState)
-

Bundle args = getArguments();


get argument data and assign to respective local members
updateUI();

Methods
updateUI()
-

devicePublications = null;
serverPublications = null;
getActivity().setTitle();
adapter = new ExpandablePublicationAdapter(getActivity(), R.layout.database_row);
adapter.setListeners();
publicationsListView.setAdapter(adapter);
updateDevicePublications();
if(isNetworkAvailable)
o updateServerPublications()
o hide no network textview
o else show no network textview

ExpandablePublicationAdapter extends
BaseExpandableListAdapter
Private Members
private
private
private
private

Activity activity;
int layoutResourceId;
LayoutInflater inflater;
final List<PublicationGroup> groups;

Overrides and Implementation


new(Activity activity, int layoutResourceId)
-

super()
this.activity = activity;
this.layoutResourceId = layoutResourceId;
this.inflater = activity.getLayoutInflater();
this.groups = new ArrayList<PublicationGroup>();

Object getChild(int groupPosition, int childPosition)


-

return groups.get(groupPosition).publications.get(childPosition);

long getChildId(int groupPosition, int childPosition)


-

return 0; //TODO: implement this

View getChildView(int groupPosition, final int childPosition, Boolean isLastChild, View


convertView, ViewGroup parent)

View view = convertView;


Publication publication = (Publication) getChild(groupPosition, childPosition);
If(view == null)
o view = activity.getLayoutInflater().inflate(layoutResourceId, parent, false);
o holder = new PublicationHolder();
o get all holder.controlId = (CastType) view.findViewById(R.id.control_id);
o view.setTag(holder);
else (view != null)
o holder = (PublicationHolder) view.getTag();
set control tags to publication object
set controls visibility and texts based on publication data
return view

int getChildrenCount(int groupPosition)


-

return groups.get(groupPosition).publications.size();

Object getGroup(int groupPosition)


-

return groups.get(groupPosition);

int getGroupCount()
-

return groups.size();

void onGroupCollapse(int groupPosition)

super.onGroupCollapse(groupPosition);

void onGroupExpanded(int groupPosition)


-

super.onGroupExpanded(groupPosition);

long getGroupId(int groupPosition)


-

return groupPosition; //TODO: implement this

View getGroupView(int groupPosition, boolean isExpanded, View convertView,


ViewGroup parent)
-

if(convertView == null)
o convertView = inflater.inflate(R.layout.listrow_group, null);
(Fibre/res/layout/listrow_group.xml)
PublicationGroup group = (PublicationGroup) getGroup(groupPosition);
convertView.setText(group.Name);
return convertView;

bool hasStableIds() // whether or not the same ID always refers to the same object
-

return true;

bool isChildSelectable(int groupPosition, int childPosition)


-

return false

Methods

Subclasses
private class PublicationGroup
{
public String name;
public List<Publication> publications;
public PublicationGroup(String name, List<Publication> publications)
{
this.name = name;
this.publications = publications;
}
}
public class PublicationHolder
{
private TextView databaseNameText, lastSynchronisedText, unsavedChangesText,
chainageStatusText;
private Button openButton;
private ImageButton removeDatabaseButton, synchroniseButton, downloadChainageButton,
emailButton;
private RelativeLayout onServerLayout;
private LinearLayout onDeviceLayout;
}

Potrebbero piacerti anche