0

我正在使用以下代码在 Android 中创建一个 listView:

 ListView listView = (ListView) List.this.findViewById(R.id.mylist);
         listView.setTextFilterEnabled(true);

         String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
            "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
            "Linux", "OS/2" ,"asdsad","asdsdsa","asdasdsa"};

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,R.layout.list_item,values);

            // Assign adapter to ListView

            listView.setAdapter(adapter);
            listView.setVisibility(0);

现在我想从我的 ListView 中 Toast 一个选定的项目,所以我使用以下代码:

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

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

                    Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();

                }
            });



但不幸的是,我收到以下代码的错误

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

错误是

new AdapterView.OnItemClickListener(){} 类型必须实现继承的抽象方法 AdapterView.OnItemClickListener.onItemClick(AdapterView, View, int, long)


那么我应该怎么做才能纠正这个错误并打印我的 listview 元素? 编辑

整个代码

package com.notification;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import android.view.*;

public class List1 extends Activity 
{

Context context=this;

@Override
        public void onCreate(Bundle savedInstanceState)
        {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);
        //ListView
        try{

         ListView listView = (ListView) List1.this.findViewById(R.id.mylist);
         listView.setTextFilterEnabled(true);

         String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
            "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
            "Linux", "OS/2" ,"asdsad","asdsdsa","asdasdsa"};

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,R.layout.list_item,values);

            // Assign adapter to ListView

            listView.setAdapter(adapter);
            listView.setVisibility(0);

            //required
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                public void onItemClick(AdapterView<?> parent, View view, int position,long id)
                //public void onItemClick(ListView<?> listview, View view, int position,long id)
                {

                 Toast.makeText(List1.this, "hi",Toast.LENGTH_LONG).show();
                }
            });


            //required
            }
       catch(Exception e)
       {
        Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();}
       }
}

什么都没有烤。为什么?
编辑 2
list_item.xml

<?xml version="1.0" encoding="utf-8"?>



<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:id="@+id/tv1"
    android:padding="10dp"
    android:background="@drawable/textview1"
    style="@style/textview_text"
    android:textSize="16dp">


</Button>

列表视图.xml

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


  <ListView
        android:id="@+id/mylist"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </ListView>

</RelativeLayout>
4

4 回答 4

2

将列表项的样式更改为 R.layout.simple_liast_item_1 而不是自定义样式。

ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1,values);
于 2012-05-04T10:59:00.583 回答
1

您已将您的java 编译器版本设置为 1.5,因此它给出了错误。

你可以做两件事。

1)删除onItemClick@Override之前写的

2)right-click project - properties - java compiler - check-Enable project setting - change to 1.6

此外,还需要进行其他更改。

显示时YouActivityName.this改为使用getBaseContext()Toast

项目可以为空,所以改变......String item = values[position]

于 2012-05-04T11:02:17.890 回答
0
    ListView listView = (ListView) findViewById(R.id.mylist);
    listView.setTextFilterEnabled(true);

    final String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
       "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
       "Linux", "OS/2" ,"asdsad","asdsdsa","asdasdsa"};

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, values);

       // Assign adapter to ListView

       listView.setAdapter(adapter);
       listView.setVisibility(0);

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

               String item = values[position];

               Toast.makeText(getBaseContext(), item, Toast.LENGTH_LONG).show();

           }
       });
于 2012-05-04T10:33:33.780 回答
0

尝试这个,

Toast.makeText(getApplicationContext(),
                ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
于 2012-05-04T10:38:30.117 回答