【问题标题】:OnItemClickListener not working for ListViewOnItemClickListener 不适用于 ListView
【发布时间】:2013-01-17 06:26:59
【问题描述】:

以下是相关代码:

super.onCreate(savedInstanceState);
          this.requestWindowFeature(Window.FEATURE_NO_TITLE);                   

          // storing string resources into Array
          String[] menulist = getResources().getStringArray(R.array.menulist);      

          // Binding resources Array to ListAdapter
          this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, menulist));


          ListView lv = getListView();

          // listening to single list item on click
          lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

                // selected item
                String selected = ((TextView) view).getText().toString();

                Toast toast=Toast.makeText(getApplicationContext(), selected, Toast.LENGTH_SHORT);//This is where the error shows  
                toast.show();

                // Launching new Activity on selecting single List Item
                /*Intent i = new Intent(getApplicationContext(), SingleListItem.class);
                // sending data to new activity
                i.putExtra("product", product);
                startActivity(i);*/

            }
          });

这是 XML:

<?xml version="1.0" encoding="utf-8"?>
<!--  Single List Item Design -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/listgradient" 
        android:clickable="true"      
        android:padding="10dip"
        android:textSize="16dip"
        android:textStyle="bold" >
</TextView>

我保留了clickable 属性true。但是Toast 没有显示。我哪里错了?

【问题讨论】:

  • 你到底想做什么显示吐司或点击文本视图,因为问题是点击列表视图

标签: android android-listview textview onclicklistener


【解决方案1】:

我认为你的错误在这里:

 String selected = ((TextView) view).getText().toString();

您应该使用变量“位置”来获取列表数据的值。

【讨论】:

  • 我试过了,你的逻辑似乎是对的。但是,我认为Toast 有一些问题,因为它还没有显示出来。
【解决方案2】:

试试这个:

String selected = ((TextView) view.findViewById(R.id.your_textView_item_id)).getText().toString();

【讨论】:

  • 我试过了,你的逻辑似乎是对的。但是,我认为Toast 有一些问题,因为它还没有显示出来。
  • 在选中的同时添加一些文本,看看吐司中是否显示了一些内容。如果不将 getApplicationContext() 更改为 Activity.this
  • 删除这个:android:clickable="true"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多