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

OnItemClickListener 관련 질문입니다.

–2 추천

안녕하세요.

OnItemClickListern 관련 질문입니다.

 

현재 연습문제에 대한 답을 찾아가고 있는데, 49, 50 line 에 있는 OnItemClickListener 를 등록하라는 걸 해결 못하고 있습니다. 당췌 어떻게 하라는 건지... -_-;; 일단 Main Program 전부를 올려보겠습니다.

package com.example.calculator;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.Toast;

public class MainActivity extends Activity 
{
	private int mNumber1 = 0;
	private int mNumber2 = 0;
	
	private EditText mEtNumber1 = null;
	private EditText mEtNumber2 = null;
	private EditText mEtResult = null;
	
	private Button mBtnOperator = null;
	
	private AlertDialog mAdlgPopup = null;
	
	private String[] operatorList = { "+", "-", "*", "/", };
	
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.activity_main);
        
        mEtNumber1 = (EditText)findViewById( R.id.etNumber1 );
        mEtNumber2 = (EditText)findViewById( R.id.etNumber2 );
        mEtResult = (EditText)findViewById( R.id.etResult );
        
        mBtnOperator = (Button)findViewById( R.id.btnOperator );
        
/////////////////////////// 이 부분이 문제입니다. //////////////////////
        mBtnOperator.______________;
        findViewById(R.id.btnResult ).______________;
    }

   View.OnClickListener mOnClickListener = new View.OnClickListener()
   {

		@Override
		public void onClick( View v )
		{
			switch( v.getId() )
			{
				case R.id.btnOperator :
					selectOperator();
					break;
					
				case R.id.btnResult :
					showResult();
					break;
			}
			
		}
	   
   };
   
   private void selectOperator()
   {
	   	if (mAdlgPopup != null)
		{
			mAdlgPopup.dismiss();
		}
	   	
	   	LayoutInflater inflater = (LayoutInflater)getSystemService( LAYOUT_INFLATER_SERVICE );
		final View view = inflater.inflate( R.layout.popup_operators, null );
	   	
		ListView lstView = (ListView)view.findViewById(R.id.lstOperators);
		lstView.setAdapter( new ArrayAdapter<String> ( this, android.R.layout.simple_list_item_1, operatorList) );
		lstView.setOnItemClickListener(new OnItemClickListener() {

			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				
			   	mAdlgPopup = new AlertDialog.Builder( MainActivity.this )
					.setTitle( "연산자를 고르세요." )
					.setView(view)
					.create();
			    	mAdlgPopup.show();
			}
		});
		
		
   }
   
   AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener()
   {
		public void onItemClick(AdapterView<?> parent, View v, int position, long id)
		{
			String operation = (String)parent.getAdapter().getItem(position);
			
			mBtnOperator.setText( operation );
			
			if (mAdlgPopup != null)
			{
				mAdlgPopup.cancel();
			}
		}
   };

   private void showResult()
   {
	   String number1 = mEtNumber1.getText().toString();
	   String number2 = mEtNumber2.getText().toString();
	   String operator = mBtnOperator.getText().toString();
	   
	   mNumber1 = Integer.parseInt(number1);
	   mNumber2 = Integer.parseInt(number2);
	   
	   int result = 0;
	   
	   if( operator.equalsIgnoreCase( "+" ) )
	   {
		   result = mNumber1 + mNumber2;
	   }
	   else if( operator.equalsIgnoreCase( "-" ) )
	   {
		   result = mNumber1 - mNumber2;
	   }
	   else if( operator.equalsIgnoreCase( "*" ) )
	   {
		   result = mNumber1 * mNumber2;
	   }
	   else
	   {
		   if( operator.equalsIgnoreCase("*") ||  mNumber2 == 0 )
		   {
			   showWarningToast();
			   result = 0;
		   }
		   else
		   {
			   result = mNumber1 / mNumber2;
		   }
	   }
	   mEtResult.setText( "" + result );
   }
   
   private void showWarningToast()
   {
	   Toast.makeText(MainActivity.this, "0으로 나눌 수 없습니다.", Toast.LENGTH_LONG).show();
   }
}

 

추락천사 (150 포인트) 님이 2013년 4월 28일 질문
추락천사님이 2013년 4월 28일 수정

2개의 답변

0 추천

질문을 정확히 이해하고 답을 하는지는 모르겟지만....

extern activiry implements OnClickListener

를 추가해주고..

 

mEtNumber1 = (EditText)findViewById( R.id.etNumber1 );

mEtNumber2 = (EditText)findViewById( R.id.etNumber2 );
mEtResult = (EditText)findViewById( R.id.etResult );
 
mBtnOperator = (Button)findViewById( R.id.btnOperator );
 
mEtNumber1.setOnClickListener(this);
mEtNumber2.setOnClickListener(this);
이런식으로 하면.. 이벤트가 걸릴텐데요..
mamongs (4,050 포인트) 님이 2013년 4월 29일 답변
0 추천
연습문제가 잘못됐거나 잘못보신듯..

버튼에 OnItemClickListener는 등록할 수 없습니다.
페코페코 (250 포인트) 님이 2013년 4월 29일 답변
...