2011-10-27 21 views
3

リストビューがあります。このリストビューの各行は、次のレイアウトです。ImageView(buddy_row_image)またはTextView(chat_msg_count)のいずれかのユーザーがクリックされたかを確認するにはどうすればよいですか。listViewのどのビューがクリックされたかを知るには?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="40dp" 
    android:background="@drawable/cell" 

    > 

    <ImageView 
     android:id="@+id/buddy_row_image" 
     android:layout_gravity="center_vertical" 
     android:layout_marginLeft="20dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="2dp" 
     /> 
    <TextView 
     android:text="1" 
     android:textStyle="bold" 
     android:gravity="center_vertical|center_horizontal" 
     android:id="@+id/chat_msg_count" 
     android:background="@drawable/tag" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    </TextView> 

</LinearLayout> 
+0

あなたはキャプチャすることができ、この[リンク]を辿るonClickEvent [1] [1]:http://stackoverflow.com/questions/2240411/android-when-i-set-an-onclicklistener- for-a-listview – Dayerman

+0

私はあなたが別々に知ることはできないと思います。これらの2つの項目はlistview.Soの1つの項目として動作します。setOnClickListenerを実装することによって、どの行がクリックされたかにアクセスできます。学ばなければならない。 :d –

+1

@Android Killer:findViewByIdを使用して、必要なすべての人にonclicklistenerを設定することができます。 – Dayerman

答えて

2

私はあなたの言うことを聞いたら、各行にイメージビューとテキストビューがあり、イメージビューまたはテキストビューをクリックして、そのリストビューに含まれるテキストビューまたはイメージビューの位置を確認したいとします。あなたはそれをどうしますか:

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.your_layout_for_each_row, null); 
     } 

     TextView text = (TextView) v.findViewById(R.id.your_text); 
     ImageView img = (ImageView) v.findViewById(R.id.your_image); 
     text.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       Log.d("TAG", "position: " + position); 
      } 
     }); 
     return v; 

そして、onclicklistenerを使ってImageViewについても同じことを行います。

+0

ありがとう...私はしようとします。 – jainal

+0

確かに、問題はありません。がんばろう :) – Carnal

0

あなたは、アダプタ内this

セットsetOnClickListenerに従うonClickEventキャプチャすることができます。

1

私はCarnalに同意します。あなたが唯一のImageViewのを使用して、あなたの人生はたくさん容易になりSimpleAdapterを使用することができるのTextViewされているので、しかし迅速な先端...

SimpleAdapter adapter = new SimpleAdapter(this, SomeHashMap, R.layout.list_row, new String[]{"img","text"}, new int[]{R.id.image,R.id.textviewid}); 

    ListView list = (ListView) findViewById(R.id.listView1);  
    list.setAdapter(adapter); 

    list.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
     // capture int position and use that to determine which row was selected 
... and so on 

はまた、私は、このような

map.put("person","My Name"); 
としてキー値を添付ハッシュマップを作ってしまいましたこれが混乱した場合のようなものを使用してクリックしたときに名前をチェック

....

if (map.get(position).get("person").equals("My Name")) 
//do something 

そしてちょうどグーグル「アンドロイドリストビューsimpleadapter」と、あなたはより多くを見つける必要があります深い記事/チュートリアル。

関連する問題