Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidのlistViewですべてのチェック済みアイテムを取得するにはどうすればよいですか?


この例は、AndroidのlistViewですべてのチェック済みアイテムを取得する方法を示しています。

ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。

ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   tools:context="MainActivity">
   <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:gravity="center"
      android:orientation="horizontal">
   <Button
      android:id="@+id/viewCheckedItem"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Select all" />
   </LinearLayout>
   <ListView
      android:id="@+id/listView"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_marginTop="30dp"
      android:layout_weight="1">
   </ListView>
</LinearLayout>

ステップ3 − Javaクラス(CustomAdapter.java)と次のコードを作成します-

import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Objects;
class CustomAdapter extends BaseAdapter {
   private Context context;
   private static ArrayList<Model> modelArrayList;
   CustomAdapter(Context context, ArrayList<Model> modelArrayList) {
      this.context = context;
      CustomAdapter.modelArrayList = modelArrayList;
   }
   @Override
   public int getViewTypeCount() {
      return getCount();
   }
   @Override
   public int getItemViewType(int position) {
      return position;
   }
   @Override
   public int getCount() {
      return modelArrayList.size();
   }
   @Override
   public Object getItem(int position) {
      return modelArrayList.get(position);
   }
   @Override
      public long getItemId(int position) {
      return 0;
   }
   @SuppressLint("InflateParams")
   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
      final ViewHolder holder;
      if (convertView == null) {
         holder = new ViewHolder();
         LayoutInflater inflater = (LayoutInflater)
         context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         convertView = Objects.requireNonNull(inflater).inflate(R.layout.listitem, null, true);
         holder.checkBox = convertView.findViewById(R.id.checkBox);
         holder.tvPlayer = convertView.findViewById(R.id.playerNameList);
         convertView.setTag(holder);
      } else {
         holder = (ViewHolder) convertView.getTag();
      }
      holder.checkBox.setText("Checkbox " + position);
      holder.tvPlayer.setText(modelArrayList.get(position).getPlayer());
      holder.checkBox.setChecked(modelArrayList.get(position).getSelected());
      holder.checkBox.setTag(R.integer.btnPlusView, convertView);
      holder.checkBox.setTag(position);
      holder.checkBox.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Integer pos = (Integer) holder.checkBox.getTag();
            Toast.makeText(context, "Checkbox " +pos+ "Clicked!",
            Toast.LENGTH_SHORT).show();
            if (modelArrayList.get(pos).getSelected()) {
               modelArrayList.get(pos).setSelected(false);
            } else {
               modelArrayList.get(pos).setSelected(true);
            }
         }
      });
      return convertView;
   }
   private class ViewHolder {
      CheckBox checkBox;
      private TextView tvPlayer;
   }
}

ステップ4 − Javaクラス(Model.java)と次のコードを作成します-

class Model {
   private boolean isSelected;
   private String player;
   String getPlayer() {
      return player;
   }
   void setPlayer(String player) {
      this.player = player;
   }
   boolean getSelected() {
      return isSelected;
   }
   void setSelected(boolean selected) {
      isSelected = selected;
   }
}

ステップ5 −res/values/strings.xmlに次のコードを追加します

<resources>
   <string name="app_name">Sample</string>
   <integer name="btnPlusView">1</integer>
   <integer name="btnPlusPos">2</integer>
</resources>

ステップ6 − listView(listItem.xml)のレイアウトを作成し、次のコードを追加します-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
   android:orientation="horizontal" android:layout_width="match_parent"
   android:layout_height="match_parent">
   <CheckBox
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/checkBox" />
      <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/playerNameList"
         android:layout_marginStart="20dp"
         android:textSize="20sp" />
</LinearLayout>

ステップ7 −次のコードをsrc / MainActivity.java

に追加します
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
   private ListView listView;
   private ArrayList<Model> modelArrayList;
   private CustomAdapter customAdapter;
   Button btnSelect, btnDeselect;
   public static String[] playerList = new String[]{"Sunil Chetri - INDIA",
      "Cristiano Ronaldo - Portugal",
      "Lionel Messi - Argentina",
      "Neymar Jr - Brazil",
      "Eden Hazard - Belgium",
      "Gigi Buffon - Italy",
      "James Rodrigues - Columbia",
      "Sadio Mane - Senegal",
      "Toni Kroos - Germany"};
      @Override
      protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         listView = findViewById(R.id.listView);
         btnSelect = findViewById(R.id.viewCheckedItem);
         btnDeselect = findViewById(R.id.deSelect);
         modelArrayList = getModel(false);
         customAdapter = new CustomAdapter(MainActivity.this, modelArrayList);
         listView.setAdapter(customAdapter);
         btnSelect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               modelArrayList = getModel(true);
               customAdapter = new CustomAdapter(MainActivity.this, modelArrayList);
               listView.setAdapter(customAdapter);
               Toast.makeText(getApplicationContext(), "Checked all items",
               Toast.LENGTH_SHORT).show();
            }
         });
         btnDeselect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               modelArrayList = getModel(false);
               customAdapter = new CustomAdapter(MainActivity.this,modelArrayList);
               listView.setAdapter(customAdapter);
               Toast.makeText(getApplicationContext(), "Unchecked all items",
               Toast.LENGTH_SHORT).show();
            }
         });
      }
      private ArrayList<Model> getModel(boolean isSelect) {
         ArrayList<Model>list = new ArrayList<>();
         for (int i = 0; i < 9; i++) {
            Model model = new Model();
            model.setSelected(isSelect);
            model.setPlayer(playerList[i]);
            list.add(model);
         }
         return list;
      }
   }

ステップ8 −次のコードをandroidManifest.xmlに追加します

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
   package="app.com.sample">
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>
アプリケーションを実行してみましょう。実際のAndroidモバイルデバイスをコンピューターに接続していると思います。 Android Studioからアプリを実行するには、プロジェクトのアクティビティファイルの1つを開き、[実行]をクリックします ツールバーのAndroidのlistViewですべてのチェック済みアイテムを取得するにはどうすればよいですか? アイコン。オプションとしてモバイルデバイスを選択し、デフォルトの画面を表示するモバイルデバイスを確認します-

AndroidのlistViewですべてのチェック済みアイテムを取得するにはどうすればよいですか?


  1. Android ListViewにフッターを追加するにはどうすればよいですか?

    この例は、AndroidListViewにフッターを追加する方法を示しています。 ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。 ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。 <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"    xmlns:tool

  2. Androidでスピナー値を取得する方法は?

    この例は、Androidでスピナー値を取得する方法を示しています。 ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。 ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas