2010-12-05 8 views
1

アイテムのリストがあります。私はカスタムアダプター(Android 1.5)を使用しています。 アイテムのClickListenerを各アイテムに追加する時点まで、すべてが完全に機能します。アイテムのClickListenerがハイライトのアイテムタッチを無効にする

これを行うと、ユーザーがいずれかのアイテムに触れると「フォーカス効果」が失われます。

メカニズムは正常に動作しますが、視覚的にユーザーがクリックするとアイテムを囲む赤い背景が表示されません。

理由は何ですか?

いくつかのコード:

私arrayAdapter:

public class OrderAdapter extends ArrayAdapter<Order> { 
    private ArrayList<Order> items; 
    private Context mContext; 

    public OrderAdapter(Context context, int textViewResourceId, ArrayList<Order> items) { 
     super(mContext, textViewResourceId, items); 
     this.items = items; 
     this.mContext = context; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 

     if (v == null) { 
      LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.row, null); 
     } 
     Order o = items.get(position); 
     v.setOnClickListener((new OnItemClickListener(position, o))); 
     if (o != null) { 
      TextView tt = (TextView) v.findViewById(R.id.TxtType); 
      TextView bt = (TextView) v.findViewById(R.id.txtTimeCreated); 
      if (tt != null) { 
       tt.setText("סוג תעודה מזהה: " + o.getIdType()); 
     } 
     if (bt != null) { 
      bt.setText("זמן יצירת התמונה: " + o.getCreateDate()); 
     } 
     return v; 
    } 

    private class OnItemClickListener implements OnClickListener { 
     private int mPosition; 
     private Order mItem; 

     OnItemClickListener(int position, Order item) { 
      mPosition = position; 
      mItem = item; 
      //mItem.setmChecked(false); 
     } 

     @Override 
     public void onClick(View v) { 
      int x = mPosition; 
      int z = 0; 
     } 
    } 
} 

これはrow.xmlです:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="100sp" 
    android:padding="6dip"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:src="@drawable/certificate" 
     android:id="@drawable/certificate" 
     android:layout_marginLeft="6dip" 
     android:clickable="false"/> 

    <LinearLayout 
     android:id="@+id/LinearLayout01" 
     android:orientation="vertical" 
     android:layout_width="1sp" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:gravity="right" 
     android:focusableInTouchMode="true" 
     android:focusable="true" 
     android:clickable="true"> 

     <TextView 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:clickable="false" 
      android:id="@+id/TxtType" 
      android:text="סוג תעודה מזהה"/> 

     <TextView 
      android:singleLine="true" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_marginBottom="3dip" 
      android:id="@+id/txtTimeCreated" 
      android:text="זמן יצירת התמונה"/> 
    </LinearLayout> 
</LinearLayout> 

すべてのアイデアは歓迎されるだろう、

おかげで、

ray。

答えて

3

なぜアダプターにクリックリスナーを書いていますか?その代わりに、アクティビティ内のlistViewにはsetOnItemClickListnerが必要です。あなたの個々のリスト項目は、uはあなたのハイライトに戻っ

NOTEを取得します。これにより、もはや

yourListView.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View v, int position, long id) 
    { 
     // whatever u want do it here, not in the adapter. 

    } 
}); 

リスナーを持っていないので、これを行うことによってuがハイライトを取得します:あなたはこれらの輸入を必要とします。

import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
+0

いくつかの例を投稿できますか?あなたはその活動の中で何を意味しますか?どの活動ですか?どのように..ありがとう。 – rayman

+0

は答えを編集しました。それを確認してください。今すぐ明確になることを願っています – Varun

+0

yourListView、どのように私の主な活動でそれを取得しますか、あなたはアダプター自体で何も操作をしないように言った – rayman

関連する問題