aboutsummaryrefslogtreecommitdiffstats
path: root/src/org
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2009-05-30 02:32:33 +0000
committerKenny Root <kenny@the-b.org>2009-05-30 02:32:33 +0000
commit2e3e025b3f1b9cf3cf643049028de94102d498d3 (patch)
tree5ab9e702e5d808179b1d95d57cffea74492fbfea /src/org
parent7ce198e3ec84b7a672d0553c887480ea454ccf1b (diff)
downloadconnectbot-2e3e025b3f1b9cf3cf643049028de94102d498d3.tar.gz
connectbot-2e3e025b3f1b9cf3cf643049028de94102d498d3.tar.bz2
connectbot-2e3e025b3f1b9cf3cf643049028de94102d498d3.zip
Use ViewHolders for List Activities and optimize display of last connect time.
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@243 df292f66-193f-0410-a5fc-6d59da041ff2
Diffstat (limited to 'src/org')
-rw-r--r--src/org/connectbot/HostListActivity.java67
-rw-r--r--src/org/connectbot/PortForwardListActivity.java33
2 files changed, 63 insertions, 37 deletions
diff --git a/src/org/connectbot/HostListActivity.java b/src/org/connectbot/HostListActivity.java
index 3f5f1f0..abd2215 100644
--- a/src/org/connectbot/HostListActivity.java
+++ b/src/org/connectbot/HostListActivity.java
@@ -436,6 +436,12 @@ public class HostListActivity extends ListActivity {
public final static int STATE_UNKNOWN = 1, STATE_CONNECTED = 2, STATE_DISCONNECTED = 3;
+ class ViewHolder {
+ public TextView nickname;
+ public TextView caption;
+ public ImageView icon;
+ }
+
public HostAdapter(Context context, List<HostBean> hosts, TerminalManager manager) {
super(context, R.layout.item_host, hosts);
@@ -465,36 +471,43 @@ public class HostListActivity extends ListActivity {
}
@Override
- public View getView(int position, View origView, ViewGroup parent) {
- View view = origView;
- if (view == null)
- view = inflater.inflate(R.layout.item_host, null, false);
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder holder;
+
+ if (convertView == null) {
+ convertView = inflater.inflate(R.layout.item_host, null, false);
+
+ holder = new ViewHolder();
- TextView nickname = (TextView)view.findViewById(android.R.id.text1);
- TextView caption = (TextView)view.findViewById(android.R.id.text2);
- ImageView icon = (ImageView)view.findViewById(android.R.id.icon);
+ holder.nickname = (TextView)convertView.findViewById(android.R.id.text1);
+ holder.caption = (TextView)convertView.findViewById(android.R.id.text2);
+ holder.icon = (ImageView)convertView.findViewById(android.R.id.icon);
+
+ convertView.setTag(holder);
+ } else
+ holder = (ViewHolder) convertView.getTag();
HostBean host = hosts.get(position);
if (host == null) {
// Well, something bad happened. We can't continue.
Log.e("HostAdapter", "Host bean is null!");
- nickname.setText("Error during lookup");
- caption.setText("see 'adb logcat' for more");
- return view;
+ holder.nickname.setText("Error during lookup");
+ holder.caption.setText("see 'adb logcat' for more");
+ return convertView;
}
- nickname.setText(host.getNickname());
+ holder.nickname.setText(host.getNickname());
switch (this.getConnectedState(host)) {
case STATE_UNKNOWN:
- icon.setImageState(new int[] { }, true);
+ holder.icon.setImageState(new int[] { }, true);
break;
case STATE_CONNECTED:
- icon.setImageState(new int[] { android.R.attr.state_checked }, true);
+ holder.icon.setImageState(new int[] { android.R.attr.state_checked }, true);
break;
case STATE_DISCONNECTED:
- icon.setImageState(new int[] { android.R.attr.state_expanded }, true);
+ holder.icon.setImageState(new int[] { android.R.attr.state_expanded }, true);
break;
}
@@ -506,35 +519,37 @@ public class HostListActivity extends ListActivity {
else if (HostDatabase.COLOR_BLUE.equals(host.getColor()))
chosen = this.blue;
+ Context context = convertView.getContext();
+
if (chosen != null) {
// set color normally if not selected
- nickname.setTextColor(chosen);
- caption.setTextColor(chosen);
+ holder.nickname.setTextColor(chosen);
+ holder.caption.setTextColor(chosen);
} else {
// selected, so revert back to default black text
- nickname.setTextAppearance(view.getContext(), android.R.attr.textAppearanceLarge);
- caption.setTextAppearance(view.getContext(), android.R.attr.textAppearanceSmall);
+ holder.nickname.setTextAppearance(context, android.R.attr.textAppearanceLarge);
+ holder.caption.setTextAppearance(context, android.R.attr.textAppearanceSmall);
}
long now = System.currentTimeMillis() / 1000;
- String nice = "never";
+ String nice = context.getString(R.string.bind_never);
if (host.getLastConnect() > 0) {
int minutes = (int)((now - host.getLastConnect()) / 60);
- nice = view.getContext().getString(R.string.bind_minutes, minutes);
if (minutes >= 60) {
int hours = (minutes / 60);
- nice = view.getContext().getString(R.string.bind_hours, hours);
if (hours >= 24) {
int days = (hours / 24);
- nice = view.getContext().getString(R.string.bind_days, days);
- }
- }
+ nice = context.getString(R.string.bind_days, days);
+ } else
+ nice = context.getString(R.string.bind_hours, hours);
+ } else
+ nice = context.getString(R.string.bind_minutes, minutes);
}
- caption.setText(nice);
+ holder.caption.setText(nice);
- return view;
+ return convertView;
}
}
}
diff --git a/src/org/connectbot/PortForwardListActivity.java b/src/org/connectbot/PortForwardListActivity.java
index ee26e11..1c48e18 100644
--- a/src/org/connectbot/PortForwardListActivity.java
+++ b/src/org/connectbot/PortForwardListActivity.java
@@ -369,6 +369,11 @@ public class PortForwardListActivity extends ListActivity {
}
class PortForwardAdapter extends ArrayAdapter<PortForwardBean> {
+ class ViewHolder {
+ public TextView nickname;
+ public TextView caption;
+ }
+
private List<PortForwardBean> portForwards;
public PortForwardAdapter(Context context, List<PortForwardBean> portForwards) {
@@ -378,24 +383,30 @@ public class PortForwardListActivity extends ListActivity {
}
@Override
- public View getView(int position, View origView, ViewGroup parent) {
- View view = origView;
- if (view == null)
- view = inflater.inflate(R.layout.item_portforward, null, false);
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder holder;
+
+ if (convertView == null) {
+ convertView = inflater.inflate(R.layout.item_portforward, null, false);
+
+ holder = new ViewHolder();
+ holder.nickname = (TextView)convertView.findViewById(android.R.id.text1);
+ holder.caption = (TextView)convertView.findViewById(android.R.id.text2);
- TextView nickname = (TextView)view.findViewById(android.R.id.text1);
- TextView caption = (TextView)view.findViewById(android.R.id.text2);
+ convertView.setTag(holder);
+ } else
+ holder = (ViewHolder) convertView.getTag();
PortForwardBean pfb = portForwards.get(position);
- nickname.setText(pfb.getNickname());
- caption.setText(pfb.getDescription());
+ holder.nickname.setText(pfb.getNickname());
+ holder.caption.setText(pfb.getDescription());
if (hostBridge != null && !pfb.isEnabled()) {
- nickname.setPaintFlags(nickname.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
- caption.setPaintFlags(caption.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
+ holder.nickname.setPaintFlags(holder.nickname.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
+ holder.caption.setPaintFlags(holder.caption.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
}
- return view;
+ return convertView;
}
}
}