прошу извинить за долгое молчание, дела другие...Foenix писал(а):Я имела ввиду - покажи свой проект с работающим деревом (с данными) где нет пока фрагмента. Нужно с ним вначале разобраться. Я хочу посмотреть как у тебя даные заполняются.
Вообще не пойму зачем сразу делать анимации, пока у тебя нормально данные не заполнены?
проблемы с заполнением не возникло, поэтому меня устроили те данные, что там есть.
в итоге заменил на другую анимацию, т.к. в данном случае видимо нет возможности заполнять не активный фрагмент (фрагмент не на activity)...
как заносятся данные у меня, таблица с данными заполняется из вне, по сети сервисом, поэтому её структура подогнана под простое запонение дерева, есть поле level для заполнения DEMO_NODES, и поле name для тектового поля
Код: Выделить всё
readBase(); //заполнение DEMO_NODES
TreeType newTreeType = null;
boolean newCollapsible;
if (savedInstanceState == null) {
manager = new InMemoryTreeStateManager<Long>();
final TreeBuilder<Long> treeBuilder = new TreeBuilder<Long>(manager);
for (int i = 0; i < DEMO_NODES.length; i++) {
treeBuilder.sequentiallyAddNextNode((long) i, DEMO_NODES[i]);
}
newTreeType = TreeType.SIMPLE;
newCollapsible = true;
} else {
manager = (TreeStateManager<Long>) savedInstanceState.getSerializable("treeManager");
newTreeType = (TreeType) savedInstanceState.getSerializable("treeType");
newCollapsible = savedInstanceState.getBoolean("collapsible");
}
setContentView(R.layout.main_demo);
.........................
private void readBase() {
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File(sdCard.getAbsolutePath() + "/MyDB");
directory.mkdirs();
File dbFile = new File(directory, "myDB.db");
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFile, null);
Cursor c = db.query("mytable", null, null, null, null, null, null);
if (c.moveToFirst()) {
int idColIndex = c.getColumnIndex("id");
int nameColIndex = c.getColumnIndex("name");
int levelColIndex = c.getColumnIndex("level");
int i = 0;
DEMO_NODES = new int[c.getCount()];
do {
DEMO_NODES[i] = c.getInt(levelColIndex);
i++;
} while (c.moveToNext());
}
c.close();
db.close();
}
//в SimpleStandartAdapter
...........
private String getDescription(final long id) {
final Integer[] hierarchy = getManager().getHierarchyDescription(id);
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File(sdCard.getAbsolutePath() + "/MyDB");
directory.mkdirs();
File dbFile = new File(directory, "myDB.db");
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFile, null);
String whe = "id=" + String.valueOf(id + 1);
Cursor c = db.query("mytable", new String[]{"name"}, whe, null, null, null, null);
c.moveToFirst();
String st = c.getString(c.getColumnIndex("name"));
c.close();
db.close();
return st;
}
.............
после того как на главной активити все, что требуется для дерева выполнилось, дерево прячем таким образом
Код: Выделить всё
//прячем дерево, чтоб оно появлялось по требованию
fr = (FrameLayout) findViewById(R.id.fr_tree);
fr.setVisibility(View.GONE); //делаем фрейм не видимым
anim = AnimationUtils.loadAnimation(this, R.anim.tree_mov_left_b); //анимацией задвигаем его влево
fr.startAnimation(anim);
.....
//назначение листенера кнопке
Button mButton = (Button) findViewById(R.id.b1);
final Context context = this;
View.OnClickListener click1 = new View.OnClickListener() {
@Override
public void onClick(View v) {
//если дерево видно - прячем, иначе показываем
if (fr.getVisibility() == View.GONE) {
ssr();
} else {
ssl();
}
}
};
mButton.setOnClickListener(click1);
//показываем дерево - сдвигаем в право
private void ssr() {
fr.setVisibility(View.VISIBLE);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.tree_mov_right);
fr.startAnimation(anim);
}
//прячем дерево - сдвигаем в лево
public void ssl() {
Animation anim = AnimationUtils.loadAnimation(this, R.anim.tree_mov_left);
fr.startAnimation(anim);
fr.setVisibility(View.GONE);
}