總網頁瀏覽量

關於我自己

我的相片
人生的必修課是接受無常,人生的選修課是放下執著。

2014年6月30日 星期一

取得ListView中Button的位置

某extends Activity的class以下列方式呼叫extends DialogFragment的class
InfoDialog dialog = new InfoDialog(context);
Bundle args = new Bundle();
args.putInt(InfoDialog.BUNDLE_KEY_PRIZE, -1);   
dialog.setArguments(args);
dialog.show();


InfoDialog extends DialogFragment內含ListView
Adapter adapter = new Adapter(context, deadlineList);
ListView lv = (ListView) dialog.findViewById(R.id.lv);   
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);//無法work


Adapter extends BaseAdapter其內ListView又含Button的click事件, 為取得click的Button所在位置, 將code改寫成:
    ArrayList<String> adapter_deadline;
    class ViewHolder {
        TextView deadline;
        Button exchange;
    }
    public View getView(int position, View convertView, ViewGroup parent){             
        ViewHolder holder = null;
        if (convertView == null) {
            convertView = View.inflate(context, R.layout.adapter_listview_prize, null);
            holder = new ViewHolder();
            holder.deadline = (TextView)convertView.findViewById(R.id.summary);
            holder.exchange = (Button)convertView.findViewById(R.id.exchange);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.deadline.setText(.get(position).toString());

        OnClick listener = new OnClick(position);
        holder.exchange.setOnClickListener(listener);
        return convertView;
    }
    class OnClick implements OnClickListener {
        private int position;
        public OnClick(int position){
            this.position = position;
        }
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "position "+position, Toast.LENGTH_SHORT).show();
            LayoutInflater factory = LayoutInflater.from(context);
            final View view = factory.inflate(R.layout.layout_questionnaire, null);
            AlertDialog.Builder mAB = new AlertDialog.Builder(context);

            mAB.setView(view);         
            alert = mAB.create();
            alert.show();
        }
    }

沒有留言:

張貼留言