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

Fragment에 CustomListview 를 했는데 안되네요 ㅠ

0 추천

안녕하세요 ㅎㅎ

제가 엑티비티에서는 똑같은 소스코드로 커스텀리스트뷰를 잘 구현하는걸 봤는데요,

그걸 플라그먼트에 이식시키니 어뎁터 부분에서 this 부분이 에러나서 제가 getActivity() 로 변경하고,

listview에 붙였는데.. 에러는 안나지만, 실행하면 리스트뷰가 나타나질 않습니다...ㅠㅠ

코드첨부하겠습니다...

제가 못잡는 부분이 있는건가요/..?

public class Boxoffice extends Fragment {
    Context mcontext;
    private ListView mListView = null;
    private ListViewAdapter mAdapter = null;

    public Boxoffice(Context context){
        mcontext = context;
    }


    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
        View view = inflater.inflate(R.layout.boxoffice,null);

        mListView = (ListView) view.findViewById(R.id.listboxoffice);

        mAdapter = new ListViewAdapter(getActivity());
        mListView.setAdapter(mAdapter);

        mAdapter.addItem(getResources().getDrawable(R.drawable.bullet_0), getResources().getDrawable(R.drawable.movie_image),
                "실험", "실험", "실험", "실험", "실험");

        return view;
    }

그리고 viewholder

private class ViewHolder{
    public ImageView mRank;
    public ImageView mPoster;
    public TextView mName;
    public TextView mOpenday;
    public TextView mPeoples;
    public TextView mMoney;
    public TextView mDetail;
}

그리고 어뎁터 부분

private class ListViewAdapter extends BaseAdapter{
    private Context mContext = null;
    private ArrayList<ListData> mListData = new ArrayList<ListData>();

    public ListViewAdapter(Context mContext){
        super();
        this.mContext = mContext;
    }

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

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

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

    public void addItem(Drawable boxrank,Drawable boxposter, String boxname, String boxopenday, String boxpeoples, String boxmoney, String boxdetail){
        ListData addInfo = null;
        addInfo = new ListData();
        addInfo.Mrank = boxrank;
        addInfo.Mposter = boxposter;
        addInfo.Mname = boxname;
        addInfo.Mopenday = boxopenday;
        addInfo.Mpeoples = boxpeoples;
        addInfo.Mmoney = boxmoney;
        addInfo.Mdetail = boxdetail;
    }

    @Override
    public  View getView(int position, View convertView, ViewGroup parent){
        ViewHolder holder;
        if (convertView == null){
            holder = new ViewHolder();

            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.listviewboxoffic,null);

            holder.mRank = (ImageView) convertView.findViewById(R.id.imgboxrank);
            holder.mPoster = (ImageView) convertView.findViewById(R.id.imgboxposter);
            holder.mName = (TextView) convertView.findViewById(R.id.txtboxname);
            holder.mOpenday = (TextView) convertView.findViewById(R.id.txtboxopenday);
            holder.mPeoples = (TextView) convertView.findViewById(R.id.txtboxpeoples);
            holder.mMoney = (TextView) convertView.findViewById(R.id.txtboxmoney);
            holder.mDetail = (TextView) convertView.findViewById(R.id.txtboxdetail);

            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }

        ListData mData = mListData.get(position);

        if (mData.Mrank != null){
            holder.mRank.setVisibility(View.VISIBLE);
            holder.mRank.setImageDrawable(mData.Mrank);
        }else{
            holder.mRank.setVisibility(View.GONE);
        }
        if (mData.Mposter != null){
            holder.mPoster.setVisibility(View.VISIBLE);
            holder.mPoster.setImageDrawable(mData.Mposter);
        }else{
            holder.mPoster.setVisibility(View.GONE);
        }


        holder.mName.setText(mData.Mname);
        holder.mOpenday.setText(mData.Mopenday);
        holder.mPeoples.setText(mData.Mpeoples);
        holder.mMoney.setText(mData.Mmoney);
        holder.mDetail.setText(mData.Mdetail);

        return convertView;
    }
}

그리고 따로 생성한 ListData 엑티비티

public class ListData {
    public Drawable Mrank;

    public Drawable Mposter;

    public String Mname;

    public String Mopenday;

    public String Mpeoples;

    public String Mmoney;

    public String Mdetail;
}

진짜 오류는 안나거든요?ㅠㅠ

근데 도무지 화면에서 보여주지 않습니다.

플라그먼트가 가지는 화면이

View view = inflater.inflate(R.layout.boxoffice,null);

요거인데 boxoffice 라는 xml에는 텍스트뷰 위에 두개랑 리스트뷰 하나가 배치되어있습니다.

실행시키면 텍스트뷰는 잘나오지만 텍스트뷰 바로 밑에 배치시킨 리스트뷰는 도통나오지가 않네요..

이름도 몇번이나 확인했구요...

제가 놓치는 부분이있을까요 ㅠㅠ 넘답답하네요;;ㅠ

 

익명사용자 님이 2015년 12월 9일 질문

1개의 답변

0 추천
 
채택된 답변
addItem 메소드 안에서

mListData 에 add하는 작업이 없네요..

getCount 걸어보시면 mListData.size()가 0으로 나오겟죠?

그래서 리스트에는 아무것도 없는것 같습니다.
캬옹이 (37,920 포인트) 님이 2015년 12월 9일 답변
헐...진짜감사합니다 ㅠㅠ
왜그걸 못찾았을까요.. 너무허탈하네요..ㅠㅠㅠㅠㅠㅠㅠ
3일동안 밤낮으로 헤맸는데..ㅠㅠ
mListData.add(addInfo); 이게 누락되어있었네요...
감사합니다!!ㅎ
...