私のアプリケーションにはListViewがあり、ユーザーが要求した後、各listviewの行の先頭にあるimageviewのドラッグを介して再配置できます。小さなウィンドウでユーザーにリストビューを表示し、スペースを最大化するために、ドラッグビューの表示をGONEに設定し、ユーザーが[リストの編集]を必要とするメニュー項目を選択したときにのみ表示に設定することを計画しています。アイテム。
行アイテムのレイアウトは次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/activatedBackgroundIndicator"
android:orientation="horizontal" >
<ImageView
android:id="@id/drag_handle"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_margin="8dp"
android:visibility="gone"
android:src="@drawable/ic_drag_dots_holo_dark" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginBottom="16dp"
android:layout_marginTop="16dp"
android:background="?android:attr/dividerVertical" />
<TextView
android:id="@+id/drag_n_drop_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:maxLines="1"
android:minHeight="24dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorPrimary" />
</LinearLayout>
メニュー選択のコードは次のとおりです。
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_edit_playlist:
if (inEditMode) {
//If we are already showing the drag view, hide it.
inEditMode = false;
findViewById(R.id.drag_handle).setVisibility(View.GONE);
}
else {
//If the drag view is hidden, make it visible.
inEditMode = true;
findViewById(R.id.drag_handle).setVisibility(View.VISIBLE);
}
return true;
default:
return super.onContextItemSelected(item);
}
}
このコードの問題は、これを呼び出すsetVisibility()
と、リストビューの最初の項目のドラッグビューの表示のみが変更され、他のすべての行のドラッグビューが非表示のままになることです。
この場合、すべての行のすべてのドラッグビューを表示するにはどうすればよいですか?
編集これは、編集を押した後の外観の 画像です。これは、上記のコードを使用した、現在の外観の画像です。
ありがとう!