2010-12-05 2 views
1

У меня есть список товаров. Я использую пользовательский адаптер (Android 1.5). Все работает отлично, пока я не достиг точки, когда добавляю ClickListener элемента к каждому элементу.Пункт ClickListener отключить HighLight на Item touch

Когда я это делаю, я теряю эффект фокусировки, когда пользователь прикасается к любому предмету.

Механизм работает отлично, но визуально Я не могу видеть красный фон, который окружает элемент, когда пользователь нажимает на него.

Любая идея, почему?

Некоторый код:

мой 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> 

Любые идеи будут приветствовать,

Спасибо,

луч.

ответ

3

Почему вы пишете список подписчиков в адаптере. Вместо этого вам нужно указать setOnItemClickListner для спискаView внутри своей деятельности и обработать его там. Делая это и будет получить блик, так как ваши отдельные элементы списка не будут иметь слушателей больше

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. 

    } 
}); 

Делая это и будет получать ваш Выделите назад

Примечания: вам нужно этот импорт.

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

Пожалуйста, не могли бы вы привести пример? что вы имеете в виду в своей деятельности? какая деятельность? и в каком смысле .. спасибо. – rayman 2010-12-05 15:39:46

Смежные вопросы