1

しばらくの間、リスト項目を「お気に入り」にする方法を研究してきましたがListView、すべてが適切に表示されるチェックボックスがあります。

私の問題は、チェックボックスをクリック可能にしてリスト項目をチェック済みに設定する必要があることです。また、リスト項目をクリックして新しいアクティビティを開始できるようにする必要があります。

現在、チェックボックスをクリックするとアイコンが変更されますが、チェック済みとして設定されませんが、リスト項目をクリックすると項目がチェック済みとして設定されます。

この現在のコードには、アイテムのクリックで新しいアクティビティを開始する意図は含まれていません。現時点で私が望むのは、チェックボックスがクリックされたときにアイテムが「チェック」されることだけです。

AndroidListViewActivity.java:

package com.androidlistview;

import android.app.Activity;
import android.os.Bundle;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class AndroidListViewActivity extends Activity {

    ListView myList;
    Button getChoice;

    String[] listContent = {
            "January",
            "February",
            "March",
            "April",
            "May",
            "June",
            "July",
            "August",
            "September",
            "October",
            "November",
            "December"
    };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myList = (ListView)findViewById(R.id.list);
        getChoice = (Button)findViewById(R.id.getchoice);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.single_item, listContent);

        myList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        myList.setAdapter(adapter);

        getChoice.setOnClickListener(new Button.OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                String selected = "";

                int cntChoice = myList.getCount();
                SparseBooleanArray sparseBooleanArray = myList.getCheckedItemPositions();
                for(int i = 0; i < cntChoice; i++){
                    if(sparseBooleanArray.get(i)) {
                        selected += myList.getItemAtPosition(i).toString() + "\n";

                    }
                }

                Toast.makeText(AndroidListViewActivity.this, 
                        selected, 
                        Toast.LENGTH_LONG).show();
            }});

    }
}

main.xml:

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

<Button
    android:id="@+id/getchoice"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Get Choice" />

<ListView 
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

</LinearLayout>

list_item.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="50dp"
    android:orientation="horizontal" >

        <CheckBox
            android:id="@+id/check_favourites"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:focusable="false" />

        <TextView
            android:id="@+id/single_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#ffffff"
            android:padding="8dp"
            android:textColor="#000000"
            android:textSize="20sp"
            android:layout_gravity="right" />

</LinearLayout>
4

1 に答える 1