마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프래그먼트 내에 리스트뷰가 나오질안아요..

0 추천
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class Page1Activity extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.list_item_layout, container, false);
        return layout;
    }



    public class Fragment extends FragmentActivity {

        private ListView userList;
        private UserAdapter adapter;

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

            adapter = new UserAdapter(getActivity());

            userList = (ListView) findViewById(R.id.user_list);
            userList.setAdapter(adapter);


            User u1 = new User(getResources().getDrawable(R.drawable.test_user_icon1), "김씨", "010-1234-5678");
            adapter.add(u1);

            User u2 = new User(getResources().getDrawable(R.drawable.test_user_icon2), "이씨", "010-8765-4321");
            adapter.add(u2);

            User u3 = new User(getResources().getDrawable(R.drawable.test_user_icon3), "박씨", "010-0000-0000");
            adapter.add(u3);


            adapter.notifyDataSetChanged();
        }
    }

    public class User {
        private Drawable mUserIcon;
        private String mUserName;
        private String mUserPhoneNumber;

        User(Drawable userIcon, String userName, String userPhoneNumber){
            mUserIcon = userIcon;
            mUserName = userName;
            mUserPhoneNumber = userPhoneNumber;
        }
        public Drawable getUserIcon() {
            return mUserIcon;
        }
        public String getUserName() {
            return mUserName;
        }
        public String getUserPhoneNumber() {
            return mUserPhoneNumber;
        }
    }


    public class UserAdapter extends BaseAdapter implements View.OnClickListener {

        private User mUser;
        private Context mContext;

        private ImageView imgUserIcon;
        private TextView tvUserName;
        private TextView tvUserPhoneNumber;
        private ImageButton btnSend;


        private ArrayList<User> mUserData;
        public UserAdapter(Context context) {
            super();
            mContext = context;
            mUserData = new ArrayList<User>();
        }

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

        @Override
        public User getItem(int position) {
            return mUserData.get(position);
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;


            if (v == null) {
                v = ((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                        .inflate(R.layout.list_item_layout, null);
            }


            imgUserIcon = (ImageView) v.findViewById(R.id.user_icon);
            tvUserName = (TextView) v.findViewById(R.id.user_name);
            tvUserPhoneNumber = (TextView) v.findViewById(R.id.user_phone_number);
            btnSend = (ImageButton) v.findViewById(R.id.btn_send);

            mUser = getItem(position);
            btnSend.setTag(mUser);


            if ( mUser != null ){

                if ( mUser.getUserIcon() != null ){
                    imgUserIcon.setImageDrawable(mUser.getUserIcon());
                }
                tvUserName.setText(mUser.getUserName());
                tvUserPhoneNumber.setText(mUser.getUserPhoneNumber());
                btnSend.setOnClickListener(this);
            }

            return v;
        }

        public void add(User user){
            mUserData.add(user);
        }

        @Override
        public void onClick(View v) {
            User clickItem = (User)v.getTag();
            switch (v.getId()){
                case R.id.btn_send:
                    Toast.makeText(mContext, clickItem.getUserPhoneNumber(), Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }
}

안되요 ㅠㅠㅠ

끼끼 (140 포인트) 님이 2015년 11월 5일 질문

2개의 답변

0 추천
Activity 내부 요소로 Fragment 가 존재하는것 인데 이건 먼가 코드 자체가 많이 이상하네요

http://developer.android.com/intl/ko/training/basics/fragments/creating.html 내 샘플 프로젝트를 참고하세요
aucd29 (218,390 포인트) 님이 2015년 11월 5일 답변
에뮬레이터 실행을하면 프레그먼트는 잘나오는데 리스트뷰가 안떠요...
0 추천
Page1Activity 는 Activity를 상속해야 하고요..

Fragment도 UserFragment로 바꿔보시고, Fragment를 상속해야 합니다.

위 Fragment의 onCreate 메서드는 onCreateView에서 불러와야 하는 코드입니다.
mcsong (44,040 포인트) 님이 2015년 11월 5일 답변
Page1Activity가 Activity를 상속하게햇는데 onCreateView가 연한 검정색으로 변하면서 Override에 빨간줄이 쳐지내요 이건어떻게하나요 ㅠㅠ
onCreateView()는 Fragment의 메서드이고, Activity에서는 onCreate() 메서드가 동일한 역활을 합니다.
이게 프래그먼트 뷰페이지로 작성한건데 그게 가능한가요??
...