2012-01-03 162 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; 
}