0

これが非常に基本的な質問である場合は申し訳ありませんが、サーバー上のテキストファイルからリスト項目を取得した場合、onListItemClick を設定するにはどうすればよいですか? 私がやりたいのは、リストビューのアイテムがクリックされたときにトーストを表示することですが、これを行うために onListItemClick を追加できないようです。try/catch のせいだと思いますか?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class ListView extends ListActivity {
    public String[] ListItems = new String[]{};

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

        URL textUrl;
        try {
            textUrl = new URL("http://172.30.54.153/databases/result.txt");
            BufferedReader bufferReader = new BufferedReader(new InputStreamReader(textUrl.openStream()));
            String StringBuffer;
            String stringText = "";
            stringText.split(",");
            while ((StringBuffer = bufferReader.readLine()) != null) {
                stringText += StringBuffer;
            }
            String DbLines = new String(stringText);
            ListItems = DbLines.split(",");

            setListAdapter(new ArrayAdapter<String>( this,
            android.R.layout.simple_list_item_1, ListItems));
            bufferReader.close();

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private void OnListItemClick(ListView Parent,View v, int position, long id) {
        // TODO Auto-generated method stub
        Toast.makeText(this, "y"+ ListItems[position], Toast.LENGTH_LONG).show();
    }
}
4

3 に答える 3

1

あなたの問題:

まず、プライベート イベント リスナーのハンドラーが にあったprivateため、継承されたメソッドではなくなりました。コードは次の点で間違っていますprivate

private void OnListItemClick(ListView Parent,View v, int position, long id)

メソッドをオーバーライドするために関数の範囲を広げる必要があります。これはpublicまたはprotectedを意味します。継承の意図を確実にするために @Override 識別子を使用することをお勧めします。コードを次のように変更します (@Override および protected または public を使用):

@Override
protected void onListItemClick (ListView l, View v, int position, long id)
{
....
}

SDK ガイドを参照してください: ListActivity.onListItemClick()

次に、クリックイベントをリッスンするようにリストビューを作成する必要があります。

クラス定義を変更します。

public class ListView extends ListActivity implements OnItemClickListener 
{
...
}

に次のコードを追加しますonCreate()。この行は、現在のリスト アクティビティ (this) を指定されたリスナーに登録します。

this.setOnItemClickListener(this);
于 2013-04-01T04:33:29.967 に答える
0

OnListItemClick のリント
The method OnListItemClick(ListView, View, int, long) from the type ListActivity is never used locally

これを次のように置き換えます。
protected void onListItemClick(ListView l, View v, int position, long id)

つまり、小文字ではなく、onListItemClick大文字です 。お役に立てば幸い です。onOnListItemClickOn

于 2013-04-01T03:52:32.060 に答える
0

これを onCreate に追加します。

ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(ListView.this, "y"+ ListItems[position], Toast.LENGTH_LONG).show();
    }
});

これを削除します:

private void OnListItemClick(ListView Parent,View v, int position, long id) {
    // TODO Auto-generated method stub
Toast.makeText(this, "y"+ ListItems[position], Toast.LENGTH_LONG).show();

}

混乱を避けるために、クラスの名前を MyListView などに変更することをお勧めします

于 2013-04-01T03:21:10.243 に答える