1

DragSortListView で ListView を作成しているので、行を移動してリストを並べ替えることができます。さて、リストの動作を変更する必要があります。デフォルトでは、リストの順序を変更することはできません (setDragEnabled = false)。また、ユーザーが項目メニューをクリックしたときにのみ、リストの順序を変更できます (setDragEnabled = true)。問題は、DragSortListView を setDragEnabled に true に設定すると、現在画面に表示されていない項目のみが影響を受けることです。

例: リストに 10 個の項目があり、(画面のサイズのために) 画面に 6 個しか表示できない場合、他の 4 個の項目は影響を受けますが、現在画面に表示されている 6 個の項目は影響を受けません。これが DragSortListView の「問題」なのか、それとも ListView の一般的な問題なのかはわかりません。

だから私の質問は: DragSortListView 内のすべてのアイテムからデータを更新するにはどうすればよいですか?

今のところ、これは私が持っているものです

switch(item.getItemId()) {
    case R.id.list_menu_item1:              
    ArrayList aL = new ArrayList();
    aL = (ArrayList) findViewWithTagRecursively(dslv,"_indicator");

    for(int i = 0; i < aL.size(); i++){
        dslv.setDragEnabled(true);
        adapter.notifyDataSetChanged();
        ImageView list_image = (ImageView)aL.get(i);
        //aL -> ArrayList with the items (views) in the list.
        list_image.setImageDrawable(this.getResources().getDrawable
               (this.getResources().getIdentifier
                      ("drawable/delete_x",null,this.getPackageName())));
    }
    break;
    default:
    break;
}
4

1 に答える 1

0

ループの代わりに、単に呼び出します

dslv.setDragEnabled(true);
adapter.notifyDataSetChanged();

アダプターのgetView()セットでは、ドラッグが有効かどうかに応じてドローアブルを設定します。は、必要に応じてリスト項目に対して呼び出されますnotifyDataSetChanged()getView()

于 2013-05-01T09:21:29.867 に答える