1

カスタム アダプターを使用して ListView を作成し、チェックボックス (その時点では非表示) と TextView を使用してテキストを表示できるようにしました。

リスト内の項目を選択するときに美しいアニメーションが必要です (要素に触れると背景が青くなります)。これは可能ですか?

既に OnLongTouchListener を追加しましたが、動作しましたが、アニメーションはありません!

いくつかの助けを得るためにクールだろう:)

レイアウト XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <CheckBox
        android:id="@+id/list_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:visibility="gone"
        android:text="" 
        android:focusable="false"
        android:clickable="false">
    </CheckBox>

    <TextView
        android:id="@+id/list_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text=""
        android:clickable="true"
        android:longClickable="true" >
    </TextView>

</LinearLayout>

Java コード:

private class CommunityListAdapter extends ArrayAdapter<Community> {

    private List<Community> items;
    private Context context;

    public CommunityListAdapter(Context context, List<Community> communities) {
        super(context, R.layout.list_item, communities);
        this.items = communities;
        this.context = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.list_item, null);
        }

        Community item = items.get(position);
        if(item != null) {
            TextView textView = (TextView) view.findViewById(R.id.list_text);
            if(textView != null) {
                textView.setText(item.getName());
                textView.setOnLongClickListener(new OnLongClickListener() {

                    public boolean onLongClick(View view) {
                        startActionMode(new MultiChoiseCABListener());
                        Toast.makeText(context, "TEST", 10).show();
                        return false;
                    }

                });
            }
        }

        return view;
    }
}
4

2 に答える 2

0

タップのさまざまな状態で表示されるさまざまなビットマップを設定するドローアブルで、押された状態の xml を作成し、その xml をメイン レイアウトの背景として設定します。

状態 xml の例。

list_item_bg_state.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item  android:state_pressed="true" android:drawable="@drawable/blue_bg" />
    <item android:drawable="@drawable/white_bg"/>
</selector>

blue_bg と white_bg は、ドローアブル内の two.png 画像です。

上記のxmlはdrawablesフォルダーにある必要があります。この xml をリスト アイテムのメイン レイアウトの背景として設定します。お気に入り、

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/list_item_bg_state"
    android:orientation="horizontal" >
</LinearLayout>

よろしく、 Aqif

于 2012-06-22T13:24:05.307 に答える
0

アニメーションを定義していません。アニメーションを定義して、このビューに関連付けてください。

        Animation a = new AlphaAnimation(1.00f, 0.00f);
        a.setDuration(1000);
        YOURTEXTVIEW.startAnimation(a);
于 2012-06-22T13:19:12.603 に答える