2015-01-02 32 views
1

中的按鈕上單擊事件不起作用我使用的自定義與Custom views作爲列表元素,每個列表項都是單獨的Custom view。我面對的問題是,ListView的第一項中的按鈕上的單擊事件在點擊它時未被觸發。點擊它後,如果我們點擊屏幕上的其他地方,點擊事件就會觸發。我無法找到解決方案,我正在努力。任何幫助將不勝感激。在列表視圖項

已更新,代碼:這裏是getview方法

public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     if (position == 0) 
     { 
      convertView = this.context.LayoutInflater.Inflate(Resource.Layout.home_hero_container, null); 
      this.heroSection = convertView.FindViewById<FrameLayout>(Resource.Id.heroContainer); 
      this.setHeroCard(); 
     } 
     else 
     { 
      convertView = (View)GetItem(position - 1); 
     } 
     return convertView; 
    } 

GetItem返回CustomView。第一項將是英雄佈局,之後所有Customviews將被添加到Convertview。點擊事件不適用於英雄之後的第一項。

更新我的回答: 而不是直接到Convertview分配Customview的我膨脹的FrameLayout並添加CustomviewFrameLayout。現在我沒有點擊問題。

+0

能否請您發表一些代碼? – Krish

+0

郵編和logcat如果你的錯誤 –

+0

嘗試在你的CustomAdapter中使用ViewHolder,這將給予保證點擊適當的位置 –

回答

1

試試這個它會工作

 public class ContactsAdapter extends BaseAdapter { 

ArrayList<ContactInfo> mlist; 
Context mcontext; 


public BluetoothChatadpter(Context context,ArrayList<ChatInfo> mchtlist) {  
    mlist = mchtlist; 
    mcontext = context; 

} 

@Override 
public int getCount() { 
    return mlist.size(); 
} 

@Override 
public Object getItem(int postion) { 
    return mlist.get(postion); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
    public View getView(int position, View convertview, ViewGroup viewgroup){ 
     View view = null; 
     if(convertview == null){ 
      LayoutInflater inflater = context.getLayoutInflater(); 
      view = inflater.inflate(R.layout.contactrow, null); 

      ContactHolder holder = new ContactHolder(); 

      holder.txtviewfirstname = (TextView)view.findViewById(R.id.firstname); 
      holder.txtviewphone = (TextView)view.findViewById(R.id.phone); 
      holder.chkselected = (CheckBox)view.findViewById(R.id.check); 

      setOnClickListener(new OnClickListener() { 
    @Override 
     public void onClick(View arg0) { 
     // to open the selected file in resp 

       // do your work here 
      }}); 


chkselected .setOnClickListener(new OnClickListener() { 
    @Override 
public void onClick(View v) { 
// Toast.makeText(context,// "checked is clicke="+pos, 12).show(); 
     if (chkselected.isChecked())   
        {    

        // do your work here 
     } else { 

// do your work here        
     } 
    } 
}); 



     view.setTag(holder); 

    } 
     else{ 
      view = convertview; 
     } 
     ContactHolder holder2 = (ContactHolder) view.getTag(); 
     holder2.txtviewfirstname.setText(list.get(position).firstname); 
     holder2.txtviewphone.setText(list.get(position).phonenumber); 
     holder2.chkselected.setChecked(list.get(position).selected); 
     return view; 
    } 

    } 
1
public class ContactsAdapter extends BaseAdapter { 

ArrayList<ContactInfo> mlist; 
Context mcontext; 


public BluetoothChatadpter(Context context,ArrayList<ChatInfo> mchtlist) {  
    mlist = mchtlist; 
    mcontext = context; 

} 

@Override 
public int getCount() { 
    return mlist.size(); 
} 

@Override 
public Object getItem(int postion) { 
    return mlist.get(postion); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
    public View getView(int position, View convertview, ViewGroup viewgroup){ 
     View view = null; 
     if(convertview == null){ 
      LayoutInflater inflater = context.getLayoutInflater(); 
      view = inflater.inflate(R.layout.contactrow, null); 

      ContactHolder holder = new ContactHolder(); 

      holder.txtviewfirstname = (TextView)view.findViewById(R.id.firstname); 
      holder.txtviewphone = (TextView)view.findViewById(R.id.phone); 
      holder.chkselected = (CheckBox)view.findViewById(R.id.check); 

      holder.chkselected.setOnCheckChangeListener(new CheckchangeListener()); 



     view.setTag(holder); 

    } 
     else{ 
      view = convertview; 
     } 
     ContactHolder holder2 = (ContactHolder) view.getTag(); 
     holder2.txtviewfirstname.setText(list.get(position).firstname); 
     holder2.txtviewphone.setText(list.get(position).phonenumber); 
     holder2.chkselected.setChecked(list.get(position).selected); 
     return view; 
    } 

    class CheckchangeListener implements OnCheckedChangeListener { 


     public CheckchangeListener() { 
      // TODO Auto-generated constructor stub 



     } 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, 
       boolean isChecked) { 
      // TODO Auto-generated method stub 
      if (isChecked) { 
       // do your work here 

      } else { 
       // do your work here 

      } 


     } 
    } 



    }