0

リスト項目をクリックするとトーストを表示しようとしていますが、Visual Studio で多くのエラーが表示されます。コードは Android Studio で正常に動作しており、RemobjectC# を使用して C# 用に作り直しています。以下は私のメインアクティビティコードです

using System;
using java.util;
using android.app;
using android.content;
using android.os;
using android.util;
using android.view;

using android.widget;

namespace org.me.androidapplication8
{

public class MainActivity: Activity {

    protected override void onCreate(Bundle savedInstanceState) {
        base.onCreate(savedInstanceState);
        ContentView = R.layout.main;

        // Simple array with a list of my favorite TV shows
        String[] favoriteTVShows = {"Pushing Daisies", "Better Off Ted",
                "Twin Peaks", "Freaks and Geeks", "Orphan Black", "Walking Dead",
                "Breaking Bad", "The 400", "Alphas", "Life on Mars"};
        ListAdapter theAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, favoriteTVShows);
        ListView theListView = (ListView)findViewById(R.id.theListView);
        theListView.setAdapter(theAdapter);
        /*ERROR part 
        theListView.setOnItemClickListener(new
                    AdapterView.OnItemClickListener() {

                          public override void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                             String tvShowPicked = "You selected" +
                                     String.valueOf(adapterView.getItemAtPosition(position));
                              Toast.makeText(MainActivity.this, tvShowPicked, Toast.LENGTH_SHORT).show();
                           }
                    });
        */ 
    }
}
}

メイン レイアウト xml ファイルのコード

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

      <ListView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:id="@+id/theListView"></ListView>

</LinearLayout>

私はC#の知識があまりありません。C# で再作成する方法と、このエラーが発生する理由を教えてください。

これらはエラーです

theListView.setOnItemClickListener(new  //Error:- cannot instantiate interface type
 public override void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { //Syntax error Syntax error
    String tvShowPicked = "You selected " + favoriteTVShows[position];//Unknown identifier (position)
    Toast.makeText(MainActivity.this, tvShowPicked, Toast.LENGTH_SHORT).show(); //identifier expected(this)
            }
                    });//Type expected
//(E374) opening parenthesis or less expected, got closing brace
//(E1) semicolon expected, got "public"


...
4

4 に答える 4

0

問題は、C# では匿名型がメソッドを実装できないことです。この場合、ラムダを使用するか、メイン クラスにメソッドを実装する必要があります。

于 2014-11-06T18:54:10.980 に答える
0
theListView.setOnItemClickListener(new
                    AdapterView.OnItemClickListener() {

                          public override void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                             String tvShowPicked = "You selected " + favoriteTVShows[position];
                              Toast.makeText(MainActivity.this, tvShowPicked, Toast.LENGTH_SHORT).show();
                           }
                    });

これをコードに置き換えます。

于 2014-11-06T08:13:41.207 に答える
0

@AnujSharma の回答を使用し、コードを少し変更しました。

theListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {

            String tvShowPicked = "You selected " + favouriteTVShows[position];
            Toast.makeText(MainActivity.this, tvShowPicked, Toast.LENGTH_SHORT).show();

        }
    });

それ以外の:

theListView.setOnItemClickListener(new
                AdapterView.OnItemClickListener() {

                      public override void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                         String tvShowPicked = "You selected " + favoriteTVShows[position];
                          Toast.makeText(MainActivity.this, tvShowPicked, Toast.LENGTH_SHORT).show();
                       }
                });
于 2015-05-09T15:04:09.260 に答える
0

試す

String tvShowPicked = "You selected"+String.valueOf(theAdapter.getItemAtPosition(position));

それ以外の

String tvShowPicked = "You selected"+String.valueOf(adapterView.getItemAtPosition(position));

アダプターをグローバルにするか、最終的に設定することにより

于 2014-11-06T08:14:40.490 に答える