반응형

개요

 

이번에는 리스트뷰에 등록되어있는 아이템을 get메서드를 이용하여 가져오는 방법에 대해서 알아보도록 하겠습니다.

 


아이템 Class

 

public class NewLog {

    String txt_time;
    String txt_point;
    String txt_player;

    public NewLog(String txt_time,String txt_point,String txt_player) {

        this.txt_time = txt_time;
        this.txt_point = txt_point;
        this.txt_player = txt_player;

    }

    public String getTxt_time() {
        return txt_time;
    }

    public String getTxt_point() {
        return txt_point;
    }

    public String getTxt_player() {
        return txt_player;
    }

    public void setTxt_time(String txt_time) {
        this.txt_time = txt_time;
    }

    public void setTxt_point(String txt_point) {
        this.txt_point = txt_point;
    }

    public void setTxt_player(String txt_player) {
        this.txt_player = txt_player;
    }
}

 


Aadpter Class

 

public class MylistAdapter extends BaseAdapter {

    Context context;    // 현재엑티비티를 가리키는 역활!
    int layout;         // 만들어 놓은 xml을 연결한다.
    ArrayList<NewLog> mylog;  //메인에서 만들어놨었던 리소를 배열에 넣어준다.
    LayoutInflater inflater;    // 클릭하면 해당되는 부분만 보여준다.

    public MylistAdapter(Context context,ArrayList<NewLog> mylog,int layout) {
        this.context = context;
        this.layout = layout;
        this.mylog = mylog;
        this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        return mylog.size();
    }

    @Override
    public Object getItem(int position) {
        return mylog.get(position);
    }

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // 보여주는 부분!! 으로 제일중요하다.
        if(convertView == null){    // 객체가 없을때는 만들어준다!
            convertView = inflater.inflate(layout,parent,false);    //true 값이 들어가면 튕김
        }

        //   ImageView iv = convertView.findViewById(R.id.main_img);
        // iv.setImageResource(mymessage.get(position).main_img);
        TextView tv2 = convertView.findViewById(R.id.txt_time);
        tv2.setText(mylog.get(position).txt_time);
        TextView tv3 = convertView.findViewById(R.id.txt_player);
        tv3.setText(mylog.get(position).txt_player);
        final TextView tv4 = convertView.findViewById(R.id.txt_point);
        tv4.setText(mylog.get(position).txt_point);

        Button remove = convertView.findViewById(R.id.btn_remove);
        remove.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity.mylog1.remove(MainActivity.mylog1.get(position));

                for (int i = 0; i <= MainActivity.mylog1.size() - 1; i++) {
                    if(MainActivity.mylog1.get(i).txt_point.substring(2).equals("Point")) {
                        String strpoint = MainActivity.mylog1.get(i).txt_point.substring(0,1);
                        MainActivity.sumpoint += Integer.parseInt(strpoint);
                    }
                    else if(MainActivity.mylog1.get(i).txt_point.substring(2).equals("Advantage")) {
                        String strpoint = MainActivity.mylog1.get(i).txt_point.substring(0,1);
                        MainActivity.p1_add_list += Integer.parseInt(strpoint);
                    }
                    else if(MainActivity.mylog1.get(i).txt_point.substring(2).equals("Penalty")) {
                        String strpoint = MainActivity.mylog1.get(i).txt_point.substring(0,1);
                        MainActivity.p1_pe_list += Integer.parseInt(strpoint);
                    }
                    else if(MainActivity.mylog1.get(i).txt_point.substring(2).equals("Point_")) {
                        String strpoint = MainActivity.mylog1.get(i).txt_point.substring(0,1);
                        MainActivity.sumpoint2 += Integer.parseInt(strpoint);
                    }
                    else if(MainActivity.mylog1.get(i).txt_point.substring(2).equals("Advantage_")) {
                        String strpoint = MainActivity.mylog1.get(i).txt_point.substring(0,1);
                        MainActivity.p2_add_list += Integer.parseInt(strpoint);
                    }
                    else if(MainActivity.mylog1.get(i).txt_point.substring(2).equals("Penalty_")) {
                        String strpoint = MainActivity.mylog1.get(i).txt_point.substring(0,1);
                        MainActivity.p2_pe_list += Integer.parseInt(strpoint);
                    }


                }
                notifyDataSetChanged();
                MainActivity.txt_p1_point.setText(Integer.toString(MainActivity.sumpoint));
                MainActivity.txt_p1_add.setText(Integer.toString(MainActivity.p1_add_list));
                MainActivity.txt_p1_pe.setText(Integer.toString(MainActivity.p1_pe_list));
                MainActivity.txt_p2_point.setText(Integer.toString(MainActivity.sumpoint2));
                MainActivity.txt_p2_add.setText(Integer.toString(MainActivity.p2_add_list));
                MainActivity.txt_p2_pe.setText(Integer.toString(MainActivity.p2_pe_list));
                MainActivity.sumpoint =0;
                MainActivity.p1_add_list=0;
                MainActivity.p1_pe_list=0;
                MainActivity.sumpoint2 =0;
                MainActivity.p2_add_list =0;
                MainActivity.p2_pe_list =0;

            }
        });

        return convertView;
    }


}

 

여기서 remove 버튼을 클릭하게 되면 MainActivity에 있는 변수들에 적용시키는 것입니다.

메인에서는 물론 Static으로 선언이 되어있어야 합니다.

 


MainActivity Class

 

static ArrayList<NewLog> mylog1 = new ArrayList<>();
static MylistAdapter myListViewAdapter;
MainActivity.mylog1.add(new NewLog(txt_timer.getText().toString(),Integer.toString(3)+" Point_",p2.getText().toString()));
                MainActivity.myListViewAdapter.notifyDataSetChanged();
                for (int i = 0; i <= mylog1.size() - 1; i++) {
                    if(mylog1.get(i).txt_point.substring(2).equals("Point_")) {
                        String strpoint = mylog1.get(i).txt_point.substring(0, 1);
                        sumpoint2 += Integer.parseInt(strpoint);
                    }
                }
                txt_p2_point.setText(Integer.toString(sumpoint2));
                sumpoint2 =0;

이부분이 리스트에 담겨있는 아이템의 특정 부분(point)을 전부 가져와서 합해주는 코드입니다.

 

 

MainActivity.mylog1.add(new NewLog(txt_timer.getText().toString(),Integer.toString(4)+" Point_",p2.getText().toString()));
                MainActivity.myListViewAdapter.notifyDataSetChanged();
                for (int i = 0; i <= mylog1.size() - 1; i++) {
                    if(mylog1.get(i).txt_point.substring(2).equals("Point_")) {
                        String strpoint = mylog1.get(i).txt_point.substring(0, 1);
                        sumpoint2 += Integer.parseInt(strpoint);
                    }
                }
                txt_p2_point.setText(Integer.toString(sumpoint2));
                sumpoint2 =0;

 

이 부분은 지워준후 특정 부분을 전부 가져와서 합해주는 코드입니다.

 


이상으로 리스트뷰의 아이템을 가져오고 어뎁터에서 컨트롤하는 방법을 알아보았습니다.

 


 

반응형

+ Recent posts