2017-02-25 8 views
0

拡張可能なアニメーション(from this tutorial)を持つ通常のListView(mItemsList)を使用しています。それは、リストアイテムをクリックすると展開し、このアイテムの詳細を表示します。カスタムリストビュー(アンドロイド)のすべてのリストアイテムを展開します

mItemsList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, final View view, int position, long id) { 

      View details = view.findViewById(R.id.details); 

      // Creating the expand animation for the item 
      ExpandAnimation expandAni = new ExpandAnimation(details, 500); 

      // Start the animation on the toolbar 
      details.startAnimation(expandAni); 
     } 
    }); 

私はshowDetailsボタンを作成し、私はボタンをクリックした後、すべてのリスト項目を拡大したいが、私は完全に失われています。以下のコードは動作しません。

mShowDetailsButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      for (int i = 0; i < mItemsList.getAdapter().getCount(); i++) { 
       View details= v.findViewById(R.id.details); 
       details.startAnimation(new ExpandAnimation(details, 500)); 
      } 
     } 
    }); 

私を助けてください。ここで

は私のlist_item xml file

答えて

0

は多分、自動的にすべてのlistciewを開くには1で項目1をクリックして次のような同様のアプローチを行います。

mShowDetailsButton.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     for (int i = 0; i < mItemsList.getAdapter().getCount(); i++) { 
      listView.performItemClick(
       getViewByPosition(i), 
       i, 
       listView.getAdapter().getItemId(i));    
     } 
    } 
}); 
//the listview getChildAt only return the view(item) that is visible, 
//therefore add a function to get invisible view together 
public View getViewByPosition(int position) { 
    int firstItemPosition = listView.getFirstVisiblePosition(); 
    int lastItemPosition = firstItemPosition + listView.getChildCount() - 1; 

    if (position < firstItemPosition || position > lastItemPosition) {//is invisible 
     return listView.getAdapter().getView(position, null, listView); 
    } else { 
     int childIndex = position - firstItemPosition;//is visible 
     return listView.getChildAt(childIndex); 
    } 
} 

ビューはmShowDetailsButtonを参照していて、mItemsListは参照していないため、表示されません。したがって、IDのR.id.detailsのビューを見つけることができません。

mShowDetailsButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) {//<-- this view not referring to mItemsList 
    } 
}); 
+0

ありがとうございます!私はこれを試しましたが、NullPointerExceptionを取得しました – Anna

+0

エラーログを投稿して問題のある行を見つけられるかもしれません – CbL

+0

プロセス:pm.anna.takecare、PID:17940 java.lang.NullPointerException at pm.anna.takecare。 CareActivity $ 11.onClick(CareActivity.java:276) android.view.View.performClick(View.java:4496) android.view.View $ PerformClick.run(View.java:18603)... etc ここは私の[活動ファイル]です(https://github.com/anna-wro/takecare/blob/master/app/src/main/java/pm/anna/takecare/CareActivity.java#L276) – Anna

関連する問題