導航:首頁 > 操作系統 > android多級樹形菜單

android多級樹形菜單

發布時間:2022-07-19 14:50:23

java如何實現二級樹形菜單動態顯示。要求載入頁面時顯示一級,點擊一級菜單再去資料庫查找出二級菜單

用json格式,非同步請求,當你點擊一級菜單的時候,js觸發,通過ajax非同步把相關參數傳到後台,查詢出來的數據,然後封裝成json格式數據返回,js拿到數據後,通過js把數據設置到頁面相應的地方!

android 中的 BaseExpandableListAdapter 類可不可以做三層視圖,請問如何寫

實現三級樹形菜單有兩點要注意的:
1、第二級也是個樹形菜單,因此必須在第二級項目展開/回收時設置足夠的空間來完全顯示二級樹形菜單;
2、在實現三級樹形菜單時,發現菜單的方法都是用不了(如OnChildClickListener、OnGroupClickListener等),因此要獲得選中的數據就必須在外部定義好回調函數,然後在第二級生成二級樹形菜單時回調這個外部函數。
PS:本文在解決No.2關鍵點的時候,只能取得第三級選中的序號.....而第一,第二級依然無法獲取其序號。
源碼如下:
http://blog.csdn.net/hellogv/article/details/6120133

㈢ android打造任意層級的樹形控制項那個id能不能用string

由於整體比較長,我決定首先帶大家看一下用法,就是如果學完了這篇博客,我們需要樹形控制項,我們需要花多少精力去完成~~
現在需求來了:我現在需要展示一個文件管理系統的樹形結構:
數據是這樣的:

//id , pid , label , 其他屬性
mDatas.add(new FileBean(1, 0, "文件管理系統"));
mDatas.add(new FileBean(2, 1, "游戲"));
mDatas.add(new FileBean(3, 1, "文檔"));
mDatas.add(new FileBean(4, 1, "程序"));
mDatas.add(new FileBean(5, 2, "war3"));
mDatas.add(new FileBean(6, 2, "刀塔傳奇"));

mDatas.add(new FileBean(7, 4, "面向對象"));
mDatas.add(new FileBean(8, 4, "非面向對象"));

mDatas.add(new FileBean(9, 7, "C++"));
mDatas.add(new FileBean(10, 7, "JAVA"));
mDatas.add(new FileBean(11, 7, "Javascript"));
mDatas.add(new FileBean(12, 8, "C"));

當然了,bean可以有很多屬性,我們提供你動態的設置樹節點上的顯示、以及不約束id, pid 的命名,你可以起任意喪心病狂的屬性名稱;

那麼我們如何確定呢?
看下Bean:

package com.zhy.bean;

import com.zhy.tree.bean.TreeNodeId;
import com.zhy.tree.bean.TreeNodeLabel;
import com.zhy.tree.bean.TreeNodePid;

public class FileBean
{
@TreeNodeId
private int _id;
@TreeNodePid
private int parentId;
@TreeNodeLabel
private String name;
private long length;
private String desc;

public FileBean(int _id, int parentId, String name)
{
super();
this._id = _id;
this.parentId = parentId;
this.name = name;
}

}

現在,不用說,應該也知道我們通過註解來確定的。

下面看我們如何將這數據轉化為樹
布局文件就一個listview,就補貼了,直接看Activity

package com.zhy.tree_view;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

import com.zhy.bean.FileBean;
import com.zhy.tree.bean.TreeListViewAdapter;

public class MainActivity extends Activity
{
private List<FileBean> mDatas = new ArrayList<FileBean>();
private ListView mTree;
private TreeListViewAdapter mAdapter;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initDatas();
mTree = (ListView) findViewById(R.id.id_tree);
try
{

mAdapter = new SimpleTreeAdapter<FileBean>(mTree, this, mDatas, 10);
mTree.setAdapter(mAdapter);
} catch (IllegalAccessException e)
{
e.printStackTrace();
}

}

private void initDatas()
{

// id , pid , label , 其他屬性
mDatas.add(new FileBean(1, 0, "文件管理系統"));
mDatas.add(new FileBean(2, 1, "游戲"));
mDatas.add(new FileBean(3, 1, "文檔"));
mDatas.add(new FileBean(4, 1, "程序"));
mDatas.add(new FileBean(5, 2, "war3"));
mDatas.add(new FileBean(6, 2, "刀塔傳奇"));

mDatas.add(new FileBean(7, 4, "面向對象"));
mDatas.add(new FileBean(8, 4, "非面向對象"));

mDatas.add(new FileBean(9, 7, "C++"));
mDatas.add(new FileBean(10, 7, "JAVA"));
mDatas.add(new FileBean(11, 7, "Javascript"));
mDatas.add(new FileBean(12, 8, "C"));

}

}

Activity裡面並沒有什麼特殊的代碼,拿到listview,傳入mData,當中初始化了一個Adapter;

看來我們的核心代碼都在我們的Adapter裡面:
那麼看一眼我們的Adapter

package com.zhy.tree_view;

import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.zhy.tree.bean.Node;
import com.zhy.tree.bean.TreeListViewAdapter;

public class SimpleTreeAdapter<T> extends TreeListViewAdapter<T>
{

public SimpleTreeAdapter(ListView mTree, Context context, List<T> datas,
int defaultExpandLevel) throws IllegalArgumentException,
IllegalAccessException
{
super(mTree, context, datas, defaultExpandLevel);
}

@Override
public View getConvertView(Node node , int position, View convertView, ViewGroup parent)
{

ViewHolder viewHolder = null;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.list_item, parent, false);
viewHolder = new ViewHolder();
viewHolder.icon = (ImageView) convertView
.findViewById(R.id.id_treenode_icon);
viewHolder.label = (TextView) convertView
.findViewById(R.id.id_treenode_label);
convertView.setTag(viewHolder);

} else
{
viewHolder = (ViewHolder) convertView.getTag();
}

if (node.getIcon() == -1)
{
viewHolder.icon.setVisibility(View.INVISIBLE);
} else
{
viewHolder.icon.setVisibility(View.VISIBLE);
viewHolder.icon.setImageResource(node.getIcon());
}
viewHolder.label.setText(node.getName());

return convertView;
}

private final class ViewHolder
{
ImageView icon;
TextView label;
}

}

我們的SimpleTreeAdapter繼承了我們的TreeListViewAdapter ; 除此之外,代碼上只需要復寫getConvertView , 且getConvetView其實和我們平時的getView寫法一致;

公布出getConvertView 的目的是,讓用戶自己去決定Item的展示效果。其他的代碼,我已經打包成jar了,用的時候導入即可。這樣就完成了我們的樹形控制項。
也就是說用我們的樹形控制項,只需要將傳統繼承BaseAdapter改為我們的TreeListViewAdapter ,然後去實現getConvertView 就好了。

㈣ AS3.0里沒有TREE組件...要怎麼做樹形菜單

AS 3 裡面有 tree組件的。

㈤ 我用treeview實現的樹形菜單,但是數據量很多,載入很慢,各位有什麼優化的方法嗎

分級載入即可 每次填充兩級

㈥ 如何在Android中展示樹狀結構的數據

取決於你的數據源的設計。通常在關系型資料庫中涉及到樹形顯示的信息,都有一個父分類parentid屬性,根據父分類屬性中的值,我們可以確定該條數據屬於哪個分類,也可以得到某一個分類下的子分類信息。因此可以使用簡單遞歸方法實現遍歷效果://獲取某分類下子分類方法public nodelist getnodesbyparentid(object parentid){.........}//public nodelist getnodes(node paranode){ nodelist returnlist = getnodesbyparentid(paranode.id); for(int nCount = 0; nCount<returnlist.count;nCount ++) { returnlist.add(getnodes.id); } return returnlist;}

㈦ android如何在一行顯示4個菜單

通常是用View(包括ViewGroup)控制項配上XML的樣式來做的。具體細節不想說了,可以參考 Samples里的ApiDemos/View,和View的Doc,以及Implementing a UI這篇Doc。其他還有很多,感覺算是SDK講述的最多的內容。
從控制項的使用上,和網頁的設計類似,盡量用parent_width之類的抽象長度,用Theme來做風格,抽取所有的字串等信息做本地化設計。相關內容參看Implementing a UI就好。
一類比較重要的是數據綁定控制項。如果做過ASP.Net會從中看到很多類似的地方。一個支持數據綁定的控制項,比如ListView。可以通過一個 ListAdapter綁定到一個數據源上。ListAdapter是一個抽象類,主要的實現類包括SimpleAdapter和 SimpleCursorAdapter。前者是綁定一個靜態的Array,後者是綁定一個動態的Cursor。Cursor前面說過,是一個指向數據源的隨機迭代器,將View綁定到Cursor通常要設置這樣幾個參數。一個是每一行的樣式,稱作Row Layout,其實就是一個普通的Layout的XML文件。還有就是一個列和現實控制項的對應關系。那個控制項顯示哪個列的值,這是需要配置的。為了定製一個良好的數據顯示控制項,最簡單你可以定製很PP的Row Layout,復雜一點就是可以重載綁定控制項View,或者是適配器ListAdapter。如果是一個數據顯示密集的應用,且你對UI有些追求,這個工作估計是必不可少的。
一個主要用於顯示數據內容的Activity,可以選擇派生自ListActivity。它提供了一個具有ListView 的Layout,還有simple_list_item_1, simple_list_item_2, two_line_list_item等默認的Row Layout,還有一些比較不錯的API,和可供響應選擇Item的事件。可以滿足你比較基礎的需求。如果你覺得只有一個ListView的界面太突兀,你可以為這個ListActivity指定一個Layout,需要注意的是,你需要提供一個id為@android:id/list的ListView控制項,避免Activity在內部偷偷尋找該控制項的時候失敗。
除了這些要求,做好UI還有注意易用性和效率。快捷鍵是一個比較不錯的選擇,在 Activity中調用setDefaultkeyMode(SHORTCUT_DEFAULT_KEYS),可以開啟快捷鍵模式,然後你可以將菜單綁定到指定快捷鍵上就OK了。個人覺得Tip也是一個比較重要的東西,但目前觀察看來,這個東西只能夠自己提供了。界面的動態性有時候是不可避免的,比如說菜單就是一個需要經常根據游標位置提供不同的選項。這個東西Android很人道的考慮到了,你可以參看NodeList這個Sample。它採取的應該是一個靜態模擬動態的方式,這樣有助於提高速度。你也可以利用ViewInflate,動態從一個XML創建一個控制項。成本據Doc說很大,不到萬不得已不要使用。

閱讀全文

與android多級樹形菜單相關的資料

熱點內容
伺服器地址跟蹤 瀏覽:978
免費google雲伺服器 瀏覽:516
摘譯和編譯的英文 瀏覽:359
熱泵壓縮機選型 瀏覽:121
op手機微信加密如何解除 瀏覽:386
如何在王牌戰爭找到高爆率伺服器 瀏覽:13
江浙小學語文輔導課用什麼APP 瀏覽:99
新夢幻大陸伺服器地址 瀏覽:241
網吧伺服器怎麼更換壁紙 瀏覽:530
linux命令方法 瀏覽:332
linux下載freetype 瀏覽:123
程序員入駐平台 瀏覽:327
程序員大戰外掛 瀏覽:745
html實例教程pdf 瀏覽:157
linux命令開放所有許可權 瀏覽:575
30歲能學會編程 瀏覽:737
小火箭的伺服器是什麼 瀏覽:967
cad查信息命令 瀏覽:402
XP禁止新建文件夾 瀏覽:394
程序員的悲慘生活 瀏覽:207