이번에 앱을 하나 개발하고 있습니다.
리스트화면에서 제스처를 넣어서 왼쪽에서 튀어나오는 메뉴를 구현하려하는데요.
Activity에다가 OnGestureListener이벤트를 추가했는데..
리스트위에서는 작동하지 않고 리스트에 추가한 setOnClickListener도 제대로 작동하지 않습니다.
어떻게 해야할지 궁금합니다.
소스는 아래와 같이 구성했는데요. 어떻게해야 두개가 다 제대로 동작할까요?
public class BusinessListActivity extends Activity implements OnClickListener, OnGestureListener {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView (R.layout.activity_businesslist);
gestureScanner = new GestureDetector(this);
}
@Override
public void onClick(View v){
switch(v.getid()){
case R.id.xxx:
break;
}
private class JsonLoadTask extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String...strs){
Log.d(TAG, "doInBackground");
return getBusinessLogList();
}
@Override
protected void onPostExecute(String result){
Log.d(TAG, "onPostExecute" + result);
if (result.equals("Y")){
ListAdapter la = new ListAdapter();
businesslist.setAdapter(la);
}else{
//데이터가 없을때의 처리
}
}
}
//Project의 리스트를 가져온다.
public String getBusinessLogList(){
StringBuffer sb = new StringBuffer();
String m_code = prefs.getString("M_Code", "");
}catch(JSONException ex){
ex.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
return sb.toString();
}
//List용 Adapter
class ListAdapter extends BaseAdapter{
public ListAdapter(){
this.notifyDataSetChanged();
}
@Override
public int getCount() {
return jarray.length();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.businesslist_row, null);
TextView businessdate = (TextView)row.findViewById(R.id.bglist_date1);
ImageButton businessStat = (ImageButton)row.findViewById(R.id.bglist_btn1);
try{
businessdate.setText(jarray.getJSONObject(position).getString("R_Date"));
String R_App1 = jarray.getJSONObject(position).getString("R_Approval1");
String R_App2 = jarray.getJSONObject(position).getString("R_Approval2");
}catch(Exception e){
Log.d(TAG, "GETVIEW EXP " + e.getMessage());
}
return row;
}
}
private class listItemClickListener implements OnItemClickListener
{
public void onItemClick(AdapterView<?> parentView, View clickedView, int position, long id)
{
try{
String dkey = jarray.getJSONObject(position).getString("Seqno");
Intent i = new Intent(ctx, BusinessInsertActivity.class);
i.putExtra("dKey", dkey);
i.putExtra("MODE", "U");
startActivity(i);
}catch(Exception e){
e.printStackTrace();
}
}
}
@Override
public boolean onTouchEvent(MotionEvent me) {
gestureScanner.onTouchEvent(me);
return super.onTouchEvent(me);
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
aniShow = AnimationUtils.loadAnimation(ctx, R.anim.padein);
aniHide = AnimationUtils.loadAnimation(ctx, R.anim.padeout);
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Log.d(TAG, "Gone");
menulayout.setVisibility(View.GONE);
menulayout.setAnimation(aniHide);
}
else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Log.d(TAG, "Visible");
menulayout.setVisibility(View.VISIBLE);
menulayout.setAnimation(aniShow);
}
} catch (Exception e) {
}
return true;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
}