안녕하세요.
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();
}
}