안녕하세요 ㅎㅎ
제가 엑티비티에서는 똑같은 소스코드로 커스텀리스트뷰를 잘 구현하는걸 봤는데요,
그걸 플라그먼트에 이식시키니 어뎁터 부분에서 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에는 텍스트뷰 위에 두개랑 리스트뷰 하나가 배치되어있습니다.
실행시키면 텍스트뷰는 잘나오지만 텍스트뷰 바로 밑에 배치시킨 리스트뷰는 도통나오지가 않네요..
이름도 몇번이나 확인했구요...
제가 놓치는 부분이있을까요 ㅠㅠ 넘답답하네요;;ㅠ