package net.sf.openrocket.android.rocket;
import net.sf.openrocket.R;
import net.sf.openrocket.android.rocket.RocketComponentTreeAdapter.RocketComponentWithId;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import pl.polidea.treeview.AbstractTreeViewAdapter;
import pl.polidea.treeview.TreeNodeInfo;
import pl.polidea.treeview.TreeStateManager;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
/**
* This is a very simple adapter that provides very basic tree view with a
* checkboxes and simple item description.
*
*/
public class RocketComponentTreeAdapter extends AbstractTreeViewAdapter<RocketComponentWithId> {
static class RocketComponentWithId {
RocketComponent component;
long id;
public RocketComponentWithId( RocketComponent c, long id ) {
this.component = c;
this.id = id;
}
}
public RocketComponentTreeAdapter(final Activity treeViewListDemo,
TreeStateManager<RocketComponentWithId> manager,
final int numberOfLevels) {
super(treeViewListDemo, manager, numberOfLevels);
}
private String getDescription(final RocketComponentWithId id) {
return id.component.getName();
}
@Override
public View getNewChildView(final TreeNodeInfo<RocketComponentWithId> treeNodeInfo) {
final View viewLayout = getActivity().getLayoutInflater().inflate(R.layout.component_list_item, null);
return updateView(viewLayout, treeNodeInfo);
}
@Override
public View updateView(final View view,
final TreeNodeInfo<RocketComponentWithId> treeNodeInfo) {
final View viewLayout = view;
final TextView descriptionView = (TextView) viewLayout.findViewById(android.R.id.text1);
descriptionView.setText(getDescription(treeNodeInfo.getId()));
return viewLayout;
}
@Override
public void handleItemClick(final View view, final Object id) {
final RocketComponentWithId longId = (RocketComponentWithId) id;
final TreeNodeInfo<RocketComponentWithId> info = getManager().getNodeInfo(longId);
if (info.isWithChildren()) {
super.handleItemClick(view, id);
} else {
final ViewGroup vg = (ViewGroup) view;
// perform click on child item
}
}
@Override
public long getItemId(final int position) {
RocketComponentWithId rcid = getTreeId(position);
return rcid.id;
}
}