簡體   English   中英

在ListView中獲取選中的項目-Android

[英]Get the checked items in a ListView — Android

我有一些檢查選項的列表視圖。 我想在單擊按鈕后將所有選中的項轉移到字符串數組中,以便可以在其他類上使用Intent來使用它。 我該怎么做? 我已經搜索了一些答案,但是沒有一個對我有用。

public class MyClasses extends AppCompatActivity implements View.OnClickListener {
public String[] Section1 = {"Bonilla, Abbie", "Hernando, Roland Joseph", "Ko, Kritofer", "Manaig, Kathleen",
        "Olalia, Jerome", "Rosario, Kyle", "Sevilla, Karen", "Tancioco, Eron", "Villena, Mark"};
public String[] Section2 = {"Chavez, Stephanie", "Espana, Bren Alfred", "Faro, Ede", "Gonzales, Venice",
        "Magora, Joshua James", "Roman, Jairah", "Ramirez, Stephanie", "Tiboli, Jamalul", "Torrazo, Nicole"};
public String[] Section3 = {"Arbonida, Caye Anne", "De Guzman, Patricia", "Escandor, Jennifer", "Marzan, Rann",
        "Menorca, Paula", "Payofelin, Marlo", "Pimentel, Iris Coleen", "Queen, Elizabeth", "Unggoy, Monkey"};
public String[] Use = {};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_classes);
    int section = getIntent().getIntExtra("position", 20);
    ShowStudents(section);
    Button submit = (Button) findViewById(R.id.btn_Submit);
    submit.setOnClickListener(this);

}


public void ShowStudents(int pos) {

    if (pos == 0) Use = Section1;
    else if (pos == 1) Use = Section2;
    else if (pos == 2) Use = Section3;
    ListAdapter ClassAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, Use);
    final ListView classlist = (ListView) findViewById(R.id.list_Students);
    classlist.setAdapter(ClassAdapter);

    classlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            CheckedTextView item = (CheckedTextView) view;
            Toast.makeText(MyClasses.this, Use[position] + "IS PRESENT ", Toast.LENGTH_SHORT).show();
        }
    });

}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.btn_Submit:
        //transfer checked items
}

}}

創建文件CustomAdapter.class並將此代碼放入其中:

public class CustomAdapter extends ArrayAdapter {
    public CustomAdapter(Context context, int loyautId, ArrayList<String> list, String[] toCheck) {
            super(context, loyautId, list);
                if(toCheck!=null){
                this.toCheck =new ArrayList<String>(Arrays.asList(toCheck));
                }
            }

        @NonNull
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            String item = getItem(position).toString();
            final CheckedTextView check = (CheckedTextView) convertView.findViewById(android.R.id.text1);

            check.setText(getItem(position).toString());    

            if (toChcec!=null && toCheck.contains(item)) {
                check.setChecked(true);
            }
            check.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (check.isChecked()) {
                        checkedList.remove(getItem(position));
                    } else {
                        checkedList.add(getItem(position).toString());
                    }
                }
            });
            return convertView;
        }

        public ArrayList<String> getCheckedList(){
            return checkedList;
        }

    }

如何將其放置在代碼中:

CustomAdapter classAdapter = new CustomAdapter(this, android.R.layout.simple_list_item_checked, Use,option if you wont check item);

如何獲得檢查清單:

classAdapter.getCheckedList()

代碼中的示例:

public class MyClasses extends AppCompatActivity implements View.OnClickListener {
        public String[] Section1 = {"Bonilla, Abbie", "Hernando, Roland Joseph", "Ko, Kritofer", "Manaig, Kathleen",
                "Olalia, Jerome", "Rosario, Kyle", "Sevilla, Karen", "Tancioco, Eron", "Villena, Mark"};
        public String[] Section2 = {"Chavez, Stephanie", "Espana, Bren Alfred", "Faro, Ede", "Gonzales, Venice",
                "Magora, Joshua James", "Roman, Jairah", "Ramirez, Stephanie", "Tiboli, Jamalul", "Torrazo, Nicole"};
        public String[] Section3 = {"Arbonida, Caye Anne", "De Guzman, Patricia", "Escandor, Jennifer", "Marzan, Rann",
                "Menorca, Paula", "Payofelin, Marlo", "Pimentel, Iris Coleen", "Queen, Elizabeth", "Unggoy, Monkey"};
        public String[] Use = {};

    private ArrayList<String> myCheckedList; private **CustomAdapter myAdapter;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my_classes);
            int section = getIntent().getIntExtra("position", 20);
            ShowStudents(section);
            Button submit = (Button) findViewById(R.id.btn_Submit);
            submit.setOnClickListener(this);
        //YEEEE i HAVE CHECED LIST TO SUBMIT !!!
        myCheckedList = myAdapter.getCheckedList();
        }


        public void ShowStudents(int pos) {

            if (pos == 0) Use = Section1;
            else if (pos == 1) Use = Section2;
            else if (pos == 2) Use = Section3;
            myAdapter = new CustomAdapter(this, android.R.layout.simple_list_item_checked, Use,null);
            final ListView classlist = (ListView) findViewById(R.id.list_Students);
            classlist.setAdapter(ClassAdapter);

            classlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    CheckedTextView item = (CheckedTextView) view;
                    Toast.makeText(MyClasses.this, Use[position] + "IS PRESENT ", Toast.LENGTH_SHORT).show();
                 }
            });

        }

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_Submit:
                //transfer checked items
        }

在onItemClick方法中,使數組成為選中項/字符串,並將其存儲在sharepref中,然后轉到所需的所需屏幕,並從共享首選項中檢索數組。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM