2012-01-03 164 views
0

一个适配器类事件我有一个类数组适配器中,我有3场和一个复选框 我想SHW点击每个TextView的事件,我的代码下面给出了如何开火这一类单击事件。我很困惑单击在android系统

public class ItemReportAdapter extends ArrayAdapter<SalesForce>{ 
    private LayoutInflater li; 

    public ItemReportAdapter(Context context,List<SalesForce> items){ 
     super(context,0,items); 
     li=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    @Override 
    public View getView(int position,View convertView,ViewGroup parent){ 
     final SalesForce item=getItem(position); 

     View v=convertView; 
     if(v==null){ 
      v=li.inflate(R.layout.sfreportview,null); 
     } 

     final TextView idView=(TextView)v.findViewById(R.id.itemID); 
     if(idView!=null){ 
      idView.setText(""+item.getUserID()); 
     } 

     idView.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       popup();     
      } 

      private void popup() { 

       //what to write in here so as i can be shifted to other drill down 

      } 
     }); 

     final TextView captionView=(TextView)v.findViewById(R.id.itemCaption); 
     if(captionView!=null){ 
      captionView.setText(item.getName()); 
     } 

     final TextView typeView=(TextView)v.findViewById(R.id.itemType); 
     if(typeView!=null){ 
      typeView.setText(item.getUserType()); 
     } 

     final CheckBox chkbox=(CheckBox)v.findViewById(R.id.checkboxes); 

     chkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ 
       public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){ 
         popup(); 
       } 

       private void popup() { 
        // TODO Auto-generated method stub 

       } 
      }); 
     return v; 
    } 
    public long getItemId(int position){ 
     return getItem(position).getUserID(); 
    } 
    public boolean hasStableIds(){ 
     return true; 
    } 

我想点击idView上的事件我该怎么做? 任何帮助,将不胜感激感谢名单!1 :)

+0

看来你已经有idView的点击事件,不是吗? – kosa 2012-01-03 06:02:47

+0

'idView.setOnClickListener(新OnClickListener()'是不是点击监听?也许你可以改一下你的问题,因为它听起来像你已经拥有你所要求的东西。 – 2012-01-03 06:06:14

+0

ManishGupta我知道这是当我点击听者但想使用意图去隔壁班的它禁止我这样做 idView.setOnClickListener(新OnClickListener(){ @覆盖 公共无效的onClick(视图v){ 弹出();} 私人无效弹出() { 这里写什么以便我可以转移到下一个班级文件 } }); – 2012-01-03 06:09:57

回答

1

我将承担此适配器是一个ListView里面的观点。我看到你也有一个复选框。 Android真的不喜欢有可以在ListView中点击或聚焦的项目。你可以做到这一点,但你真的不应该。如果你有一个复选框,那么你真的想使用ListView的“选择模式”。请参阅this example。如果您想对项目执行其他操作,您可以使用长按。

+0

Welll日Thnx的帮助,但我已经做了这样的选择模式 这是我aarraay适配器类 – 2012-01-03 06:11:42

+0

我有1多个类和IM调用数组适配器类在类里面。我将选择模式多你送我的教程中的途径@dmon – 2012-01-03 06:12:54

0

您需要为整行设置focus属性“false”,那么它应该工作。

+0

对不起,我错了我也这样做 – 2012-01-03 06:17:12

+0

对不起,您需要为textView“idView”添加焦点“TRUE”。 – Sandy 2012-01-03 06:20:45

+0

你的TextView应该有重点,它不应该被任何其他控件 – Sandy 2012-01-03 06:22:53

-1

指的follwing答案是相似的:https://stackoverflow.com/a/8237375/607968

问题的单击事件insdie适配器视图中的项目是,你不会知道,被点击其子项。您感兴趣的是getTag()setTag()函数,它们使您能够知道哪个视图被点击。请注意,我们如何将位置设置为视图的标记,并检索onClick内的位置。处理适配器视图项目内任何子项目的点击事件也是如此。

+0

我需要点击一个事件上的复选框和其他存在于该listactivity – 2012-01-03 08:44:33

+0

请参阅该链接的textviews被覆盖。它解释了如何处理列表viwe中的chekbox事件。 – rDroid 2012-01-03 08:47:49

0

您应该与持有人的ListView,我认为你的点击事件应该工作。但这里有另一个代码,你可以尝试..我写了我的。但你可以遵循它。

class FeedListAdapter extends BaseAdapter { 
    ArrayList<LatestFeedInfo> m_list = new ArrayList<LatestFeedInfo>(); 

    public FeedListAdapter(ArrayList<LatestFeedInfo> list) { 
     m_list = list; 
    } 

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

    @Override 
    public Object getItem(int position) { 
     return m_list.get(position); 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     View rowView = convertView; 
     holder = new ViewHolder(); 
     if (rowView == null) { 
      LayoutInflater li = getLayoutInflater(); 
      rowView = li.inflate(R.layout.feed_item, null); 
      rowView.setTag(holder); 

      holder.txtFeedUrl = (TextView) rowView 

     } else { 
      holder = (ViewHolder) rowView.getTag(); 
     } 

     final LatestFeedInfo feed = m_list.get(position); 
     holder.txtFeedUrl.setText(Html.fromHtml(feed.Activity)); 

     holder.txtFeedUrl.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //here is the click event 
      } 
     }); 
     return rowView; 
    } 

} 

public static class ViewHolder { 
    TextView txtFeedUrl; 
}