UIウィジェット用のタグを設定しました。特定のタグを持つViewのリストを取得したいと思います。 View.findViewWithTag("test_tag")
を使用すると、タグをサポートするすべてのビューではなく1つのビューしか返されません。特定のタグ(属性)を持つビューのリストを見つける方法
助けてください。
UIウィジェット用のタグを設定しました。特定のタグを持つViewのリストを取得したいと思います。 View.findViewWithTag("test_tag")
を使用すると、タグをサポートするすべてのビューではなく1つのビューしか返されません。特定のタグ(属性)を持つビューのリストを見つける方法
助けてください。
メソッドのシグニチャー自体が単一のビューを返すことを通知するので、このメソッドからのビューの配列は期待できません。
public final View findViewWithTag (Object tag)
しかし、あなたが何もしてViewGroup
として、あなたのレイアウトを取得し、そのタグのルックアップを実行して、目的のビューを見つけるために、すべての子ビューを反復処理することです。たとえば:
/**
* Get all the views which matches the given Tag recursively
* @param root parent view. for e.g. Layouts
* @param tag tag to look for
* @return List of views
*/
public static List<View> findViewWithTagRecursively(ViewGroup root, Object tag){
List<View> allViews = new ArrayList<View>();
final int childCount = root.getChildCount();
for(int i=0; i<childCount; i++){
final View childView = root.getChildAt(i);
if(childView instanceof ViewGroup){
allViews.addAll(findViewWithTagRecursively((ViewGroup)childView, tag));
}
else{
final Object tagView = childView.getTag();
if(tagView != null && tagView.equals(tag))
allViews.add(childView);
}
}
return allViews;
}
私はそのメソッドがただビューを返します知っている。私はすべての意見を得るための簡単な方法を探しています。私はViewGroupを介してiteratingは最適化されたソリューションではないと思う。 – Behnam
最適化されたソリューションではないことをどのように知っていますか? – waqaslam
私は正確にはわかりません、最適化は相対的なものなので、より良い解決策が見つからなければ最適化することができます。 私はこの方法を知っていましたが、私は何らかの理由でそれを使用したくありません。しかし、最終的には良い解決策が見つからなければ、私はあなたの答えを受け入れるでしょう。 – Behnam
int tags = 6;
for (int index = 0; index < tags; index++) {
try{
TextView txtView = (TextView)getView().getRootView().findViewWithTag("txtTag-"+index);
txtView.setText(" TWitter/ @MOIALRESHOUDI ");
} catch (Exception e){}
}
が、これは誰かに役立ちます願っています!
私は同様の質問があります。何をすべきか教えてくれませんか? http://stackoverflow.com/questions/17061833/androidone-button-id-for-many-buttons-on-expandable-list-children – user2468835
参照:http://android-wtf.com/2013/06/どのように簡単にトラバース - 任意のビュー階層の - アンドロイド/ – Jamol