自定义列表阵列适配器不可单击

时间:2013-08-30 12:53:09

标签: java android listview user-interface android-arrayadapter

当我使用自定义列表数组适配器进行列表视图时,数据显示在列表中但不可单击。我已经在listview项目点击上设置了一个监听器,但是它没有工作。

此外,我找到了另一种解决方案,可以使行可点击并在线性布局列表视图项目布局上设置背景可绘制,但这是使用此解决方案的一个不好的技巧。

还有其他解决办法吗?

任何人都可以告诉我为什么会这样吗?在列表视图中,哪个默认功能不适用于自定义阵列适配器

这是我的代码:

public class Model {
    String name;
    String id;
    String price;
}

mArrayList = new ArrayList<Model>();
// mArrayList has some data in it 

mListiView.setsetAdapter(new myCoustomAdapter(mContext, mArrayList));
mListiView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(getBaseContext(), ""+position, Toast.LENGTH_LONG).show();
    }
});

public class myCoustomAdapter extends ArrayAdapter<Model> {
    ArrayList<Model> mList;

    public myCoustomAdapter(Context context, ArrayList<Model> list) {
        super(context, R.layout.item);
        this.mList=list;
    }

    @Override
    public int getCount() {
        return this.mList.size();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // layout data here 
        return view;
    }
}

项目点击没有任何结果。

2 个答案:

答案 0 :(得分:2)

首先要注意的是,只要ListView元素中存在Buttons或ImageButtons等可点击元素,它们就会控制点击事件。所以你的ListView将无法接受点击事件。

您只需要为ListView中的Button或ImageButton设置focusable属性为false。但是它们仍可以正常工作,而且ListView的onListItemClick也可以正常工作。

试试这个,

    <Button  android:id="@+id/textsize_increaser"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/back_button"
    android:focusable="false"
    android:text=" A + "/>

这里我添加了这个android:focusable =“false”,它运行正常。试试吧。

这是供参考的链接 Click is not working on the Listitem Listview android

答案 1 :(得分:0)

您的列表视图行的布局很可能包含可点击的元素,因为它会“窃取”您的点击次数。