2012-01-03 11 views
0

私は3つのフィールドと1つのチェックボックスを持つクラスの配列アダプタを持っています 私は各textView上でイベントをクリックshwしたいです、私のコードは、このクラスでクリックイベントを発生させる方法。私は混乱していますアダプタのイベントをクリックしてください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; 
    } 

私はそれをどうすればいいのですか? 何か助けていただければ幸いです!1:

+0

idViewのクリックイベントが既にあるようですね。 – kosa

+0

'idView.setOnClickListener(新しいOnClickListener()'はあなたのクリックリスナーではありませんか?おそらくあなたはあなたの質問を既に聞いているように聞こえるので、あなたの質問を言い換えることができます。 –

+0

ManishGuptaこれはクリックリスナーですが、たくはそれを行うために私を禁止意図を使用して次の授業に行くので idView.setOnClickListener(新OnClickListener(){ @Override ます。public void onClickの(ビューV){ ポップアップ(); } ます。private voidポップアップ() { 次のクラスファイルに転送できるようにここに書き込むもの } }); –

答えて

1

私は、このアダプタはListView内のビュー用であると仮定します。あなたはチェックボックスも持っていることがわかります。 Androidは、実際にクリックしたり、ListView内にフォーカスを置くことができるアイテムが好きではありません。あなたはできますそれを行うが、本当にすべきではありません。あなたがチェックボックスを持っているなら、本当にListViewの "選択モード"を使いたいと思っています。 this exampleを参照してください。アイテムに他のアクションを実行する場合は、長押しを使用できます。

+0

Welll thnxが助けてくれましたが、私はすでにこの選択モードを行っています これは私のaarraayアダプタクラスです –

+0

私は1クラス以上を持っていて、そのクラスの配列アダプタクラスを呼び出しています。 @dmon –

0

focusプロパティ"false"を行全体に設定する必要があります。

+0

申し訳ありません私はこれもやった間違っていた –

+0

申し訳ありませんが、あなたはまた、テキストビュー "idView"のためのフォーカス "TRUE"を追加する必要があります。 – Sandy

+0

あなたのtextViewはフォーカスを持っている必要があります。他のコントロールによってオーバーライドされるべきではありません。 – Sandy

-1

は似ているfollwing答えを参照してください:アダプタービュー項目insdieクリックイベントとhttps://stackoverflow.com/a/8237375/607968

問題は、子項目がクリックされた、知らないということです。興味深いのは、getTag()setTag()の機能で、どのビューがクリックされたかを知ることができます。ビューのタグとして位置を設定する方法と、onClickの位置を取得する方法に注目してください。アダプター・ビュー項目内の子項目のクリック・イベントを処理する場合も同様です。

+0

チェックボックスや他のテキストビューでイベントをクリックする必要があります –

+0

リンクを参照してください。リスト形式のチェクボックスイベントの処理方法について説明します。 – rDroid

0

あなたはホルダーを使ってリストビューを作成する必要があります。あなたのクリックイベントが機能するはずです。しかし、ここであなたが試すことができる別のコードです..私は私の書き込み。しかし、あなたはそれに従うことができます。

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; 
}