많은 분들의 도움 부탁 드립니다.

 

메인에서 버튼입력으로 팝업 띄운후 버튼이벤트 받아서 처리하는것은 잘 되는데

 

리스트뷰 선택하면 팝업창 띄우고 팝업창에서 데이터 입력받아서 리스트뷰의 값을 변경하려고 합니다.

 

하지만 현재 팝업창의 edittext와 button은 등록을 했는데 버튼 이벤트 처리하려고 하면 에러가 발생합니다.

 

그리고 데이터 받은후에 커스텀 리스트뷰의 price 값을 변경하려고하는데 이 text에 접근하는 방법좀 알려주세요~

 

소스코드

package ac.kr.miribogi;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

public class Shopping extends Activity {
 
 ArrayList<ListPrice> listItem;
 ArrayList<String> List;
 TextView edt_sum;
 TextView edt_budget;
 TextView edt_diff;
 Button btn_popup;
 EditText edt_popup;
 PopupWindow popup;
 View popupview;
 LinearLayout linear;
 int budget;
 String ItemPrice;
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shopping);
       
        List = new ArrayList<String>();
        edt_sum = (TextView) findViewById(R.id.textView4);
        edt_budget = (TextView) findViewById(R.id.textView6);
        edt_diff = (TextView) findViewById(R.id.textView8);
       
        Intent intent = getIntent();
        List = intent.getStringArrayListExtra("lists");
        budget = intent.getExtras().getInt("budget");
               
        edt_budget.setText(Integer.toString(budget));
        edt_diff.setText("-"+Integer.toString(budget));
       
        // string to array
        String[] arr = new String[List.size()];
        arr = (String[])List.toArray(arr);
       
        // array generate
        listItem = new ArrayList<ListPrice>();
       
        for(int i=0;i<List.size();i++) {
         ListPrice t1 = new ListPrice(arr[i],"0");
         listItem.add(t1);
        }
        MyAdapter m_adapter = new MyAdapter(this, R.layout.shoppinglist,listItem);
        ListView MyList;
        MyList =(ListView)findViewById(R.id.id_listView);
        MyList.setAdapter(m_adapter);
        MyList.setOnItemClickListener(mItemClickListener);
              
       //*** listView setting
        MyList.setChoiceMode(ListView.CHOICE_MODE_NONE);
        MyList.setDivider(new ColorDrawable(Color.BLUE));
        MyList.setDividerHeight(2);
          
     // popup window setup
      linear = (LinearLayout)findViewById(R.id.shoppinglayout);
      popupview = View.inflate(this, R.layout.shoppopup, null);
      popup = new PopupWindow(popupview,400,150,true);
                        
    }//oncreate
   
  //itemclicklistener
    private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
     public void onItemClick(AdapterView<?> parent, View view, int position, long l_position) {
      
      Toast.makeText(Shopping.this, "click", Toast.LENGTH_SHORT).show();
      
      popup.showAtLocation(linear, Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM, 0, 20);
      popup.setAnimationStyle(-1);
         
   edt_popup = (EditText) findViewById(R.id.input_pop);
       btn_popup = (Button) findViewById(R.id.price_pop);


 이부분을 추가하면 에러가 발생합니다.      
/*       btn_popup.setOnClickListener(new Button.OnClickListener() {
     @Override
        public void onClick(View v) {
         popup.dismiss();
        }
       });
 */    }
 }; 
  
}//Activity


// listview print list
class ListPrice {
  
 public ListPrice(String _ListName, String _Price) {
  this.ListName = _ListName;
  this.Price = _Price;
 }
 private String ListName;
 private String Price;
 
 public String getList() {
  return ListName;
 }
 
 public String getPrice() {
  return Price;
 }
}

//Custom Adapter

class MyAdapter extends BaseAdapter {
 Context maincon;
 LayoutInflater Inflater;
 ArrayList<ListPrice> arSrc;
 int layout;
 
 
 public MyAdapter(Context context,int alayout,ArrayList<ListPrice> aarSrc) {
  maincon = context;
  Inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  arSrc = aarSrc;
  layout = alayout;
 }
 public int getCount() {
  return arSrc.size();
 }
 public String getItem(int position) {
  return arSrc.get(position).getList();
 }
 public long getItemId(int position) {
  return position;
 }
 
 public View getView(int position, View convertView, ViewGroup parent){
  
  if (convertView == null){
   convertView = Inflater.inflate(layout, parent,false);
  }
  TextView lt = (TextView) convertView.findViewById(R.id.listName);
  if (lt != null) {
   lt.setText(arSrc.get(position).getList());
  }
  TextView pt = (TextView) convertView.findViewById(R.id.listPrice);
  if (pt != null) {
   pt.setText(arSrc.get(position).getPrice());
  }
  return convertView;
 } 
}

 

 

많은 고수분들 부탁드려요~~