如何在微调器列表上设置ItemLongClick?

时间:2016-04-24 15:41:58

标签: android-spinner

我有一个微调器,我想长按一下列表中的项目,但OnItemLongClick不起作用......

有人知道在旋转器项上设置长按的新方法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

根据android文档,无法对spinner项执行itemlong单击。这是Link

因此,如果您希望通过项目长按实现微调器,则必须创建自定义适配器并设置长按视图。

public class TestSpinnerAdapter extends BaseAdapter {

private String[] mArray;
public TestSpinnerAdapter(String[] array) {
    mArray =  array;
}

@Override
public int getCount() {
    return mArray.length;
}

@Override
public Object getItem(int position) {
    return mArray[position];
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, final ViewGroup parent) {
    LayoutInflater layoutInflater =LayoutInflater.from(parent.getContext());
    convertView = layoutInflater.inflate(R.layout.adapter_spinner_item,parent,false);
    ((TextView)convertView.findViewById(R.id.tv_name)).setText(mArray[position]);
    convertView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            Toast.makeText(parent.getContext(),"On Long Click",Toast.LENGTH_SHORT).show();
            return false;
        }
    });
    return convertView;
  }
}

并将此适配器设置为您的微调器

mTestSPN = (Spinner) findViewById(R.id.spn_test);
    TestSpinnerAdapter testSpinnerAdapter = new TestSpinnerAdapter(getResources().getStringArray(R.array.array_name));
    mTestSPN.setAdapter(testSpinnerAdapter);

在string.xml中

<string-array name="array_name">
    <item>Array Item One</item>
    <item>Array Item Two</item>
    <item>Array Item Three</item>
</string-array>