質問

ここで質問をした前に、私は多くを学んだので、もう一度試してみる価値があると思います。

私はこのリンクからFedorの怠zyなリストを使用しています:ListViewの怠zyな画像

それは魅力のように機能しています。しかし、Fedorは彼のメインクラスを拡張させています Activity それ以外の ListActivity. 。このため、ListItemClickリスナーを使用することはできなくなりました。 Eclipseは、いくつかのエラーを宣言します onListItemClick(). 。それは私が向きを変えるときに動作します

    @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
     // Intent launcher here
}

の中へ

   protected void onListItemClick(ListView l, View v, int position, long id) {
     // Intent launcher here
   }

しかし、意図的なランチャーは機能しません。トースト通知もありません。

私が回るとき ActivityListActivity, 、Eclipseはよろめきませんが、私のエミュレータは私に力を与えてくれます。

どうすれば入手できますか

  • また onListItemClick() アクティビティをクリックします(望ましい)
  • または、コードをaに変換しますか ListActivity フォースクローズなし?

よろしくお願いします。

役に立ちましたか?

解決

私は自分の答えを書いています:

1)@falmarriのコードには、更新が必要です
2)私の提案された編集は完全に拒否されましたXD
3)StackoverFlowは、コメントを書くことができません。

これがコードです:

ListView listView = (ListView) findViewById(R.id.my_listview_in_layout);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener(){
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id){
        //Do stuff
        //...
    }
});


参照: によると android.widget.adapterview.onitemclicklistener , 、パブリックメソッドonitemclick()は、アイテムがクリックされたときに呼び出されるメソッドです{未知の保護されたメソッドonlistitemclick()の代わりに }

他のヒント

listitemclicklistenerがaに添付されています ListView. 。変更したとき ListActivityActivity, 、あなたのクラスにはもはやそれに関連するビューがありません。 Activity クラスは、onlistitemclicklistenerをどうするかわからない。

リスナーを自分に添付するだけです ListView:

listview.setOnItemClickListener(new OnItemClickListener(){
    @Override
    protected void onListItemClick(AdapterView<?> parent, View view, int position, long id){
        //Do stuff
    }
});

私はこれに一日中取り組んでおり、自分で作った後 ArrayAdapter リスト内のクラスを変更する方法を理解できませんでした。

これが私がそれを行う方法を見つけた方法です。配列に電話した後、その方法でコードを完成させました。

ListView lv =getListView();
lv.setOnItemClickListener(this);

それから私のテキストの後、私は置きました

public void onItemClick(AdapterView<?> arg0, View arg1, int position,
            long arg3) {
    String item = (String) getListAdapter().getItem(position);

    if (item.equals("Economy"))
    {
        Intent intent = new Intent(packages.this, economy.class);
        startActivity(intent);
    }
    else if (item.equals("Basic"))
    {
        Intent intent = new Intent(packages.this, basic.class);
        startActivity(intent);
    }
    else if (item.equals("Professional"))
    {
        Intent intent = new Intent(packages.this, professional.class);
        startActivity(intent);
    }
    else if (item.equals("Custom Applications"))
    {
        Intent intent = new Intent(packages.this, applications.class);
        startActivity(intent);
    }
}

間に私が完全にカスタマイズすることができました ListView カスタムフォントと背景付き。私はあなたが本当に気にしないと確信しています。しかし、私は出発し、これを投稿して、将来誰かを助けるかもしれないことを望んでいました。

非非のためにListActivity aのアイテムクリックリッピングリスナーを持つには ListView, 、あなたは電話する必要があります setOnItemClickedListener()ListView (それを使用する必要があるかもしれません findViewById() XMLから来ている場合)

単にオーバーライドするのではなく ListActivity's onListItemClickListener(), 、ここにあなたはあなたの呼び出しを持っているでしょう Activity 埋め込む AdapterView.onItemClickedListener() パラメーターとして渡します setOnItemClickedListener().

(ソースコードを読む場合 ListActivity (私がお勧めします)、あなたはあなたのオーバーライドを呼び出す内部リスナーオブジェクトを作成することにより、舞台裏で正確にそれを行うことがわかります onListItemClick()).

使用している場合 ListActivity 次に、このようなことをしたい:

public class YourClass extends ListActivity implements OnItemClickListener{

    @Override
    public void onCreate(Bundle icicle){
        super.onCreate(icicle);
        setContentView(R.layout.your_layout);

        getListView().setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // your stuff here
    }
}

これが唯一の方法ではありません OnItemClickListener. 。他の答えを見てください。これは、より明確で読みやすいので、私がやりたい方法です。

fe.java

package com.example.rfe;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class FE extends ListActivity {
 public List<String> d = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.file);
        d = new ArrayList<String>();    
        Scanner in = null;
        File f = new File("/sdcard/input.txt");
        try
        {
        in = new Scanner(new FileReader(f));
        while(in.hasNext()==true)
        {
            d.add(in.nextLine());   
        }
        }catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    }
        ArrayAdapter<String> fileList =
                  new ArrayAdapter<String>(this, R.layout.row, d);
                 setListAdapter(fileList);
    }
 @Override
 protected void onListItemClick(ListView l, View v, int position, long id) 
 {
     String selection = l.getItemAtPosition(position).toString();
     Toast.makeText(this, selection, Toast.LENGTH_LONG).show();
    super.onListItemClick(l, v, position, id);
}
}

DataSourceフルーツにはいくつかの文字列が含まれていると仮定します。定義できます onCreate() 次のように:

setListAdapter(new ArrayAdapter<String>(this, R.layout.list_fruit,
                FRUITS)); // context is this, style is list_fruit, Context, ,data_binding to FRUITs

そして、それを書きます onListItemClick() 次のように:

protected void onListItemClick(ListView parent, View v, int position, long id) {
                Toast.makeText(this,  " You selected  " + FRUITS[position], Toast.LENGTH_SHORT).show();
        }

私はそれがあなたのために働くことを願っています:)

私は単にフォローを追加しました onCreate():

    listvview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            setPaymentDetails();
        }
    });

の外 onCreate() 追加した setPaymentDetails():

protected void setPaymentDetails()
{
    Intent intent = new Intent(this, SetPaymentDetailsActivity.class);
    startActivity(intent);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top