web-dev-qa-db-ja.com

ListViewにArrayAdapterを使用するOnItemClickListener

ArrayAdapterを使用して作成するListViewのOnItemClickListenerが必要です。

これは私がそれを作成するために使用するコードです:

List<Comment> values = datasource.some_search("Wednesday","11");
        ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this,
                Android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);

OnItemClickListenerを実装するにはどうすればよいですか?

ありがとう!

編集:ArrayAdapterとListViewでオブジェクトの文字列を使用しています。

編集2:その他のコード:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        datasource = new CommentsDataSource(this);
        datasource.open();
        //check if database is populated if NOT, populate with txtToDb();

        if (!datasource.isPopulated()) {
            // Database is not populated so copy it from assets here
            try {
                txtToDb();
                Log.i("Database", "Was not Populated");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                Log.i("Database", "Was not populated: txtToDb(); failed");

            }

        } else {
            Log.i("Database", "Populated");
        }

        //wat to show on screen:
        List<Comment> values = datasource.search("Wednesday","11");


        // Use the SimpleCursorAdapter to show the
        // elements in a ListView
        ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this,
                Android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);

    }

編集3:XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical" >

    <LinearLayout
        Android:id="@+id/group"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" >

        <Button
            Android:id="@+id/add"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Add New" 
            Android:onClick="onClick"/>

        <Button
            Android:id="@+id/delete"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Delete First" 
            Android:onClick="onClick"/>

    </LinearLayout>

    <ListView
        Android:id="@Android:id/list"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="@string/hello" />

</LinearLayout> 
21
Ahmed Zafar

OnItemClickListenerを使用する

   ListView lv = getListView();
   lv.setOnItemClickListener(new OnItemClickListener()
   {
      @Override
      public void onItemClick(AdapterView<?> adapter, View v, int position,
            long arg3) 
      {
            String value = (String)adapter.getItemAtPosition(position); 
            // assuming string and if you want to get the value on click of list item
            // do what you intend to do on click of listview row
      }
   });

行をクリックすると、リスナーが起動します。したがって、リストビューでsetOnClickListenerを使用し、匿名の内部クラスOnItemClickListenerを使用します。

onItemClickもオーバーライドします。最初のパラメーターはアダプターです。 2番目のパラメーターはビューです。 3番目のパラメーターは位置(リストビューアイテムのインデックス)です。

位置を使用して、アイテムを取得します。

編集:コメントから、アダプタまたはリストビューを設定する必要があると思います

したがって、アクティビティがListActivtiyを拡張すると仮定します

     setListAdapter(adapter); 

または、アクティビティクラスがActivityを拡張する場合

     ListView lv = (ListView) findViewById(R.id.listview1);
     //initialize adapter 
     lv.setAdapter(adapter); 
62
Raghunandan

この方法を使用できます...

listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                final int position, long id) {

          String main = listView.getSelectedItem().toString();
        }
    });
6
Piyush

OK、アクティビティがListActivityを拡張するという情報の後に、OnItemClickListenerを実装する方法があります。

public class newListView extends ListView {

    public newListView(Context context) {
        super(context);
    }

    @Override
    public void setOnItemClickListener(
            Android.widget.AdapterView.OnItemClickListener listener) {
        super.setOnItemClickListener(listener);
        //do something when item is clicked

    }

}
2
Heisnberg

私はarrayadapterを使用していますが、この次のコードを使用してアイテムを取得できます

文字列値=(文字列)adapter.getItemAtPosition(position);

listView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
             String string=adapter.getItem(position);
             Log.d("**********", string);

        }
    });
1
Issac Balaji