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から選択したアイテムをトーストしたいので、次のコードを使用します。

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)

エラーは

タイプnewAdapterView.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();}
       }
}

何も焼かれていません。なぜ? 2list_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>

listview.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に設定したので、エラーが発生します。

あなたができる2つのこと。

1)onItemClickの@Override前に書かれたものを削除します

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

また、他にも必要な変更があります。

表示中YouActivityName.thisに代わりに使用getBaseContext()Toast

アイテムはnullになる可能性があるため、変更してください...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 に答える