0

Мне нужно добавить код, ответственный за действие, когда нажата одна строка из моего списка. Я не знаю, должно ли оно быть OnItemClickListener или OnClickListener и как & где его написать. Мое приложение доступно для просмотра. Вот мой код:Android ListView OnClickListener

public class JobListAdapter extends ArrayAdapter<String> { 
    private LayoutInflater mInflater; 

    public static class WorkViewHolder { 
     public TextView mJob; 
     public ImageView mImageAndroKorpo; 
    } 
    public JobListAdapter(Context mContext, List<String> mDane) { 
     super(mContext, R.layout.list_element_job, mDane); 
     this.mInflater = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     WorkViewHolder mHolder; 
     if(convertView == null) { 
      convertView = mInflater.inflate(R.layout.list_element_job, parent, false); 
      mHolder = new WorkViewHolder(); 

      TextView mJobsName = (TextView) convertView.findViewById(R.id.nazwa_oferty); 
      ImageView mImageAndroKorpo = (ImageView)convertView.findViewById(R.id.list_image); 

      mHolder.mJob = mJobsName; 
      mHolder.mImageAndroKorpo = mImageAndroKorpo; 

      convertView.setTag(mHolder); 
     } else { 
      mHolder = (WorkViewHolder)convertView.getTag(); 
     } 
     final String mWorkPosition = getItem(position); 

     mHolder.mJob.setText(mWorkPosition); 
     mHolder.mJob.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // Here? 
      } 
     }); 
     return convertView; 
    } 
} 

Я добавил код, где я думаю, он должен быть размещен. Это нормально? OnItem или OnClick? И как использовать позицию позиции?

Мой list_element_job.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/white" 
    android:padding="10dp" 

    <CheckBox 
     android:id="@+id/list_checkbox" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <ImageView 
     android:id="@+id/list_image" 
     android:src="@drawable/android_white_piece" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_width="1dp" 
     android:layout_height="1dp"/> 

    <TextView 
     android:text="" 
     android:background="@drawable/android_korpo_transparent3" 
     android:textStyle="bold" 
     android:textColor="@android:color/black" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:gravity="left" 
     android:layout_toLeftOf="@id/list_image" 
     android:layout_width="0dp" 
     android:textSize="7pt" 
     android:layout_height="wrap_content" 
     android:id="@+id/nazwa_oferty"/> 

    <TextView 
     android:text="Details..." 
     android:background="@android:color/white" 
     android:clickable="true" 
     android:focusable="false" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentBottom="true" 
     android:layout_below="@id/nazwa_oferty" 
     android:textSize="6pt" 
     android:textColor="@android:color/darker_gray"/> 

</RelativeLayout> 

Пожалуйста, помогите мне как-то :)

+1

добавить onItemClickListener в своем классе активность в ListView – WISHY

+0

удалить onClickListener из метода GetView() для класса адаптера и добавить listview.setonItemClick в деятельности. – jack

ответ

0

Просто удалите onClick со своего адаптера. И добавить OnItemClickListener к вашему примеру ListView

:

JobListAdapter jobListAdapter = new JobListAdapter (...); 
listView.setAdapter(jobListAdapter); 

listView..setOnItemClickListener(new OnItemClickListener() 
    { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // TODO Auto-generated method stub 

     } 
    }); 
+0

Спасибо, и как я могу передать индекс выбранной строки в следующую активность? Мой проект включает пользовательский адаптер и держатель для просмотра ... если это что-то изменит. – Cavanah

+0

'int position' - это индекс, который вы можете перейти к следующему действию, используя' Intent' – MAC

1

Просто удалите фокус для флажка в XML, как показано ниже:

<CheckBox 
    android:id="@+id/list_checkbox" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

из-за проверки коробки фокуса элемент списка кликов не будет работать.