2

OnItemClickListener に問題があります。Android 開発者の Web サイトで提供されているガイドラインに従ってこれを書いていることに注意してください: http://developer.android.com/resources/tutorials/views/hello-listview.html

リスナーを設定する場合:

lv.setOnItemClickListener(new OnItemClickListener() {

新しい「OnItemClickListener」に対して次のエラーが表示されます

「タイプ new AdapterView.OnItemClickListener(){} は、継承された抽象メソッド AdapterView.OnItemClickListener.onItemClick(AdapterView, View, int, long) を実装する必要があります」

私は日食が示唆するものを試し、明らかに実装されていないメソッドを追加しましたが、パラメーターの実際の詳細とは別に、ほとんど同じメソッドを生成するだけです。

"int position"

自動生成されたコードには

"int arg2"

そして、このメソッドを配置することで、呼び出されないため、メソッドが冗長になります(と思います...)

パラメータの内容など、コードのさまざまな部分を変更しようとしましたが、うまくいきませんでした。基本的に、この問題を解決するための助けを探しています。アドバイスや指示をいただければ幸いです。私の完全なコードを以下に示します。

import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class View extends ListActivity{
static final String[] entriesArray = new String[]{
    "One", "Two", "Three", "GO"};


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setListAdapter(new ArrayAdapter<String>(this, R.layout.dbrowviewer, entriesArray));

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //When clicked show toast
            Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
            Toast.LENGTH_SHORT).show();
        }

    });

}
}

そして念のためレイアウト.. (R.layout.dbrowviewer)

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:textSize="16sp" >
</TextView>

また、誰かがアドバイスを与えるための予備の秒を持っている場合..トーストに「(TextView) view.getText()」というエラーが表示され、View から TextView にキャストできないというエラーが表示されます。運が悪かったので簡単に調べましたが、現在、最初のより重要な問題を解決しようとしています!

前もって感謝します、

ジョシュ

4

3 に答える 3

4

まず、これは私が修正したコードで、うまくいきました。

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parnet, android.view.View view,
            int position, long id) {
        Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
                Toast.LENGTH_SHORT).show();
    }

});

ここでの問題は、「クラス」名です。クラス名として「View」を選択しました。これはたまたま android.view.View と同じであるため、リスナーの 2 番目のパラメーターの型として View を使用する場合、コンパイラは混乱します。

私の提案は、アクティビティ クラスに別の名前を付けたほうがよいということです。私は通常、アクティビティの機能と「Activity」接尾辞をアクティビティ クラス名として使用します。たとえば、ユーザーのリストを表示する場合は、UserListActivity を選択できます。ここでは、それを示す接尾辞として「ListActivity」を選択します。アクティビティは実際には ListActivity から派生します。

于 2012-04-18T00:52:45.653 に答える
0

View は既に存在するクラスです。別の名前に変更してみてください....

于 2012-04-18T01:12:55.837 に答える
0

追加してみてください:

@Override

上記 onItemClick():

lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         //When clicked show toast
         Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
         Toast.LENGTH_SHORT).show();
}

});
于 2012-04-18T00:45:54.393 に答える