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

custom dialog에서 custom listview구현.

0 추천
public class MenuDialog extends Activity {
	
	private ListView mListView = null;
	private ListViewAdapter mAdapter = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.menu_dialog);
		
		
		mListView = (ListView) findViewById(R.id.menuLV);
		 
		mAdapter = new ListViewAdapter(this);
		mListView.setAdapter(mAdapter);
		
		mAdapter.addItem("항목관리", "항목을 추가,삭제,수정을 하는 메뉴");
		
		
		mListView.setOnItemClickListener(new OnItemClickListener() {
			 
		    @Override
		    public void onItemClick(AdapterView<?> parent, View v, int position, long id){
		        MenuData mData = mAdapter.mListData.get(position);
		        Toast.makeText(MenuDialog.this, mData.mMenuName, Toast.LENGTH_SHORT).show();
		    }
		});
		
		
		
	}
	
	 @Override
	    public void onBackPressed() {
	        super.onBackPressed();
	        finish();
	    }

	
	
	private class ViewHolder {
	     public TextView mMenuName;
	     public TextView mMenuCommet;
	}
	
	private class ListViewAdapter extends BaseAdapter {
	    private Context mContext = null;
	    private ArrayList<MenuData> mListData = new ArrayList<MenuData>();
	 
	    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;
	    }
	 
	    @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.menulist, null);
	    		
	    		holder.mMenuName = (TextView)findViewById(R.id.mununame);
	    		holder.mMenuCommet = (TextView)findViewById(R.id.munucomment);
	    		
	    		convertView.setTag(holder);	    		
	    	} else {
	    		holder = (ViewHolder) convertView.getTag();
	    	}
	    	
	    	MenuData mMenuData = mListData.get(position);
	    	
	    	holder.mMenuName.setText(mMenuData.mMenuName);
	    	holder.mMenuCommet.setText(mMenuData.mMenuComment);
	    	
	    	
	        return convertView;
	    }
	    
	    public void addItem(String mMenuName, String mMenuCommet){
	        MenuData addInfo = null;
	        addInfo = new MenuData();
	        addInfo.mMenuName = mMenuName;
	        addInfo.mMenuComment = mMenuCommet;
	                 
	        mListData.add(addInfo);
	    }
	     
	    public void remove(int position){
	        mListData.remove(position);
	        dataChange();
	    }
	    
	    public void dataChange(){
	        mAdapter.notifyDataSetChanged();
	    }

	    
	}
}

정상적으로 실행은 되는데 다이얼로그 진입시 프로그램이 멈추면서 진행이 안되는데 런타임 오류라 해결이 안되네요..

고수님들의 많은 도움부탁드립니다.

 

 

쌍둥이준 (180 포인트) 님이 2014년 9월 17일 질문
쌍둥이준님이 2014년 9월 17일 수정
https://www.dropbox.com/s/rmb5yldnyv2efc8/log.txt?dl=0

해당로그 파일을 올립니다.

1개의 답변

0 추천
 
채택된 답변
        mAdapter = new ListViewAdapter(this);
        mAdapter.addItem("항목관리", "항목을 추가,삭제,수정을 하는 메뉴");
 
        mListView.setAdapter(mAdapter);
 

               holder.mMenuName = (TextView) convertView.findViewById(R.id.mununame);

                holder.mMenuCommet = (TextView) convertView.findViewById(R.id.munucomment);
                 
 

 

aucd29 (218,390 포인트) 님이 2014년 9월 17일 답변
쌍둥이준님이 2014년 9월 17일 채택됨
감사합니다. 덕분에 해결되었습니다^^
...