2

在 Listview 的适配器类中,我为每个列表项添加了 setOnClickListener 事件。但是每当我们点击列表项时,这些项都不会突出显示。如果我删除 setOnClickListener 事件,我将能够轻松地看到列表项选择。请告诉我,如何解决问题

在 listAdapter 的 getview 中,如果我添加这部分,listview 项目选择颜色将不会出现

holder.ContactNumber.setText(fitems.get(position).getContactName());

                convertView.setOnClickListener(new OnClickListener() {

                    public void onClick(View v) {


                        // TODO Auto-generated method stub

                        setSelectedItem(i);
                         Intent intent = 
                              new Intent(context, preview_screen.class);

                        context.startActivity(intent);
                    }
                });
4

4 回答 4

5

在 re/drawable 文件夹中为您的列表视图项 row_selector.xml 创建一个选择器,将此选择器添加为您的背景 listview_item.xml 这是 android 使用的默认选择器,您可以自定义一个:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_pressed_yellow"
          android:state_pressed="true" />
    <item android:drawable="@drawable/button_focused_orange"
          android:state_focused="true" />
    <item android:drawable="@drawable/button_normal_green" />
</selector>

使用 OnItemClickListener() 回调来处理列表视图项目上的点击事件

listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                Toast.makeText(getApplicationContext(),
                ""+position, Toast.LENGTH_SHORT).show();
            }
        });
于 2012-06-23T10:13:21.557 回答
1

您必须使用 xml 文件为行设置背景...

请参阅此示例

可绘制->bg_row.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/white" android:state_pressed="false" android:state_selected="false"/>
    <item android:drawable="@color/blue" android:state_pressed="true" android:state_selected="false"/>
    <item android:drawable="@color/blue" android:state_pressed="true" android:state_selected="true"/>

</selector>
于 2012-06-23T10:08:13.753 回答
1
 // ListView Item Click Listener
            listView.setOnItemClickListener(new OnItemClickListener() {

                  @Override
                  public void onItemClick(AdapterView<?> parent, View view,
                     int position, long id) {

                   // ListView Clicked item index
                   int itemPosition     = position;

                   // ListView Clicked item value
                   String  itemValue    = (String) listView.getItemAtPosition(position);

                    // Show Alert 
                    Toast.makeText(getApplicationContext(),
                      "Position :"+itemPosition+"  ListItem : " +itemValue , Toast.LENGTH_LONG)
                      .show();

                  }

             }); 

在列表视图侦听器中,您使用该示例

于 2014-10-21T09:21:32.833 回答
0

给 convertView 一个 onClickListener 的想法不是 ListView 的工作方式。不要设置这个监听器。相反,将 onItemClickListener 或 onItemSelectListener (取决于您想要做什么)设置到列表视图并将代码放在那里。

于 2012-06-23T10:20:14.833 回答