如何访问Activity中的Adapter中的ArrayList

时间:2018-02-14 05:51:50

标签: android android-intent arraylist baseadapter

我有一个列表视图,其中每行都有一个复选框以及详细信息。现在单击复选框,我想将这些人的id存储在我能够存储的arrayList中,但是在适配器中存储了arrayList id。我想在活动中访问arrayList,因为我想点击活动中的按钮,我想将所有选定人员的ID发送到另一个活动。我该怎么做。

我的代码如下:

SendWorkList.java

public class SendWorkList extends AppCompatActivity {


    List<SendWorkRow> send_work_array_list;
    ListView send_work_list;
    JSONArray send_work_jsonArray1,send_work_result_jsonArray2;
    JSONObject send_work_jsonObject1,send_work_result_jsonArray2_i;
    String[] send_work_id,send_work_name,send_work_bankaccount,send_work_ifsc,send_work_contacts,send_work_department,send_work_cardnumber,send_work_cardexpiry,send_work_cardcvv;
    String send_work_status,send_work_result;
    ViewGroup send_work_headerView;
    Set<Integer> send_work_count;
    Intent intent;
    Set<String> indexes;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send_work);

        send_work_list=findViewById( R.id.send_work_list);
        send_work_array_list=new ArrayList<SendWorkRow>();
        send_work_count=  new HashSet<>();
    }

    @Override
    protected void onResume() {
        super.onResume();
        cardDetailsList();

        /*  send_work_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(SendWorkList.this, "assasa", Toast.LENGTH_SHORT).show();
            }
        });*/
    }

    private void cardDetailsList()
    {
        RequestQueue rq = Volley.newRequestQueue(SendWorkList.this);
        StringRequest stringRequest = new StringRequest( Request.Method.GET,
                "http://grepthorsoftware.in/tst/bank_account/showingdata.php",

                new Response.Listener<String>() {
                    public void onResponse(String response) {
                        try {
                            send_work_jsonArray1=new JSONArray(response);
                            send_work_jsonObject1 = send_work_jsonArray1.getJSONObject(0);
                            send_work_status= send_work_jsonObject1.getString("status");

                            if(send_work_status.equals("1")) {
                                send_work_result = send_work_jsonObject1.getString("result");
                                send_work_result_jsonArray2 = new JSONArray(send_work_result);

                                send_work_id = new String[send_work_result_jsonArray2.length()];
                                send_work_name = new String[send_work_result_jsonArray2.length()];
                                send_work_bankaccount = new String[send_work_result_jsonArray2.length()];
                                send_work_ifsc = new String[send_work_result_jsonArray2.length()];
                                send_work_contacts = new String[send_work_result_jsonArray2.length()];
                                send_work_department =new String[send_work_result_jsonArray2.length()];
                                send_work_cardnumber = new String[send_work_result_jsonArray2.length()];
                                send_work_cardexpiry = new String[send_work_result_jsonArray2.length()];
                                send_work_cardcvv= new String[send_work_result_jsonArray2.length()];

                                if (  send_work_name.length > 0 ||   send_work_id.length > 0 ||   send_work_bankaccount.length > 0 ||   send_work_ifsc.length > 0 ||   send_work_contacts.length > 0)
                                {
                                    send_work_id = null;
                                    send_work_name = null;
                                    send_work_bankaccount = null;
                                    send_work_ifsc = null;
                                    send_work_contacts = null;
                                    send_work_department= null;
                                    send_work_cardnumber= null;
                                    send_work_cardexpiry= null;
                                    send_work_cardcvv= null;

                                    send_work_id = new String[send_work_result_jsonArray2.length()];
                                    send_work_name = new String[send_work_result_jsonArray2.length()];
                                    send_work_bankaccount = new String[send_work_result_jsonArray2.length()];
                                    send_work_ifsc = new String[send_work_result_jsonArray2.length()];
                                    send_work_contacts = new String[send_work_result_jsonArray2.length()];
                                    send_work_department =new String[send_work_result_jsonArray2.length()];
                                    send_work_cardnumber = new String[send_work_result_jsonArray2.length()];
                                    send_work_cardexpiry = new String[send_work_result_jsonArray2.length()];
                                    send_work_cardcvv= new String[send_work_result_jsonArray2.length()];
                                }

                                for(int i=0;i<send_work_result_jsonArray2.length();i++)
                                {
                                    send_work_result_jsonArray2_i=send_work_result_jsonArray2.getJSONObject(i);

                                    send_work_id[i] = send_work_result_jsonArray2_i.getString("id");
                                    send_work_name[i] = send_work_result_jsonArray2_i.getString("Name");
                                    send_work_bankaccount[i] = send_work_result_jsonArray2_i.getString("Bankaccount");
                                    send_work_ifsc[i] = send_work_result_jsonArray2_i.getString("IFSC");
                                    send_work_contacts[i] = send_work_result_jsonArray2_i.getString("Contact");
                                    send_work_department[i] = send_work_result_jsonArray2_i.getString("Department");
                                    send_work_cardnumber[i] = send_work_result_jsonArray2_i.getString("Cardnumber");
                                    send_work_cardexpiry[i] = send_work_result_jsonArray2_i.getString("Cardexpiry");
                                    send_work_cardcvv[i] = send_work_result_jsonArray2_i.getString("Cardcvv");
                                }

                                if (  send_work_array_list.size() > 0) {
                                    send_work_array_list.clear();
                                }

                                for (int i = 0; i <   send_work_id.length && i< send_work_name.length && i <   send_work_bankaccount.length && i <   send_work_ifsc.length && i <   send_work_contacts.length && i <   send_work_department.length && i< send_work_cardnumber.length && i< send_work_cardexpiry.length && i< send_work_cardcvv.length; i++) {
                                    send_work_array_list.add(new SendWorkRow(  send_work_id[i], send_work_name[i],  send_work_bankaccount[i],   send_work_ifsc[i],   send_work_contacts[i],   send_work_department[i], send_work_cardnumber[i], send_work_cardexpiry[i],send_work_cardcvv[i]));
                                }

                                if ( send_work_headerView != null) {
                                    send_work_list.removeHeaderView( send_work_headerView);
                                }
                                send_work_headerView = (ViewGroup) getLayoutInflater().inflate(R.layout.send_work_list_view_header,  send_work_list, false);
                                send_work_list.addHeaderView(  send_work_headerView);
                                send_work_list.setAdapter(new SendWorkAdapter(SendWorkList.this,  send_work_array_list));
                            }
                        }catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    };
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError arg0) {
                // TODO Auto-generated method stub
            }
        })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();

                return params;
            }
        };
        rq.add(stringRequest);
    }
}

SendWorkAdapter.java

public class SendWorkAdapter extends BaseAdapter {

    Context context;
    List<SendWorkRow> send_work_array_list;
    Set<String> indexes;

    public  SendWorkAdapter(Context context, List<SendWorkRow> send_work_array_list)
    {
        this.context=context;
        this.send_work_array_list=send_work_array_list;
        indexes = new HashSet<String>();
    }

    @Override
    public int getCount() {
        return send_work_array_list.size();
    }

    @Override
    public Object getItem(int i) {
        return i;
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup viewGroup) {
        LayoutInflater inflater= (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
        View view=inflater.inflate( R.layout.send_work_list_view_row,viewGroup,false);


        CheckBox textView1=view.findViewById( R.id.send_work_checkbox_row);
        TextView textView2=view.findViewById( R.id.send_work_name_row );
        TextView textView3=view.findViewById( R.id.send_work_bank_account_row );
        TextView textView4=view.findViewById( R.id.send_work_ifsc_row );
        TextView textView5=view.findViewById( R.id.send_work_contact_number_row );
        TextView textView6=view.findViewById( R.id.send_work_department_row );
        TextView textView7=view.findViewById( R.id.send_work_card_number_row );
        TextView textView8=view.findViewById( R.id.send_work_expiry_date_row );
        TextView textView9=view.findViewById( R.id.send_work_cvv_row );

        final  SendWorkRow account_details_row=send_work_array_list.get( position );

        textView2.setText( account_details_row.getSendWorkCardDetailsName() );
        textView3.setText( account_details_row.getSendWorkCardDetailsBankAccount() );
        textView4.setText( account_details_row.getSendWorkCardDetailsIfsc());
        textView5.setText( account_details_row.getSendWorkCardDetailsContacts() );
        textView6.setText( account_details_row.getSendWorkCardDetailsDepartment() );
        textView7.setText( account_details_row.getSendWorkCardDetailsCardNumber() );
        textView8.setText( account_details_row.getSendWorkCardDetailsCardExpiry() );
        textView9.setText( account_details_row.getSendWorkCardDetailsCardCvv() );

        textView1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if(compoundButton.isChecked()){
                    Toast.makeText(context, account_details_row.getSendWorkCardDetailsId(), Toast.LENGTH_SHORT).show();
                    indexes.add(account_details_row.getSendWorkCardDetailsId());
                }
            }
        });
        return view;
    }
}

SendWorkRow.java

public class SendWorkRow {

    private String send_work_id,send_work_name,send_work_bankaccount,send_work_ifsc,send_work_contacts,send_work_department,send_work_cardnumber,send_work_cardexpiry,send_work_cardcvv;

    public SendWorkRow(String send_work_id, String send_work_name, String send_work_bankaccount, String send_work_ifsc, String send_work_contacts,String send_work_department,String send_work_cardnumber,String send_work_cardexpiry,String send_work_cardcvv) {

        this.send_work_id = send_work_id;
        this.send_work_name = send_work_name;
        this.send_work_bankaccount = send_work_bankaccount;
        this.send_work_ifsc = send_work_ifsc;
        this.send_work_contacts = send_work_contacts;
        this.send_work_department = send_work_department;
        this.send_work_cardnumber = send_work_cardnumber;
        this.send_work_cardexpiry = send_work_cardexpiry;
        this.send_work_cardcvv = send_work_cardcvv;
    }

    //Getters
    public String getSendWorkCardDetailsId() {
        return send_work_id;
    }

    public String getSendWorkCardDetailsName() {
        return send_work_name;
    }

    public String getSendWorkCardDetailsBankAccount() {
        return send_work_bankaccount;
    }

    public String getSendWorkCardDetailsIfsc() {
        return send_work_ifsc;
    }

    public String getSendWorkCardDetailsContacts() {
        return send_work_contacts;
    }

    public String getSendWorkCardDetailsDepartment() {
        return send_work_department;
    }

    public String getSendWorkCardDetailsCardNumber() {
        return send_work_cardnumber;
    }

    public String getSendWorkCardDetailsCardExpiry() {
        return send_work_cardexpiry;
    }

    public String getSendWorkCardDetailsCardCvv() {
        return send_work_cardcvv;
    }
}

1 个答案:

答案 0 :(得分:2)

在适配器中创建一个方法,如

public class SendWorkAdapter extends BaseAdapter {
    public List<SendWorkRow> getAllWorkRows() {
        return send_work_array_list;
    }
}

并使用activity中的适配器实例访问此方法。

另一种方法是你可以在Adapter中编写一个方法,你可以在List中找到所有选定的id并返回。因此,每当您需要选定ID的列表时,请从Activity调用此方法并执行您的任务。像

public class SendWorkAdapter extends BaseAdapter {
    public List<SendWorkRow> getAllSelectedWorkRows() {
       // write your logic to find selected rows
        return result;
    }
}