簡體   English   中英

Android ListView OnClickListener

[英]Android ListView OnClickListener

單擊列表中的一行時,我需要添加一個負責操作的代碼。 我不知道它應該是OnItemClickListener還是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>

請以某種方式幫助我:)

只需刪除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" />

由於復選框焦點列表項,單擊偵聽器將無法工作。

只需從適配器類中刪除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

        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM