Android 变量fd是从内部类Error中访问的

Android 变量fd是从内部类Error中访问的,android,Android,我正在创建简单的listview。所有项目都将成功列出。但是 Toast不起作用。此代码链接是我得到的错误。Toast.maketexthis,你好,fd.getposition,Toast.LENGTH\u LONG.show 完整代码 首先,您必须使fd可以从侦听器内部访问。这可以通过全局声明df或使df为final来实现 第二,你不能在监听器内部使用它,因为这只是替换行 Toast.makeText(this,"hello",fd.get(position),Toast.LENGTH_LO

我正在创建简单的listview。所有项目都将成功列出。但是 Toast不起作用。此代码链接是我得到的错误。Toast.maketexthis,你好,fd.getposition,Toast.LENGTH\u LONG.show

完整代码


首先,您必须使fd可以从侦听器内部访问。这可以通过全局声明df或使df为final来实现

第二,你不能在监听器内部使用它,因为这只是替换行

Toast.makeText(this,"hello",fd.get(position),Toast.LENGTH_LONG).show();
为此:

Toast.makeText(MainActivity.this,"hello",fd.get(position),Toast.LENGTH_LONG).show();
并将MainActivity替换为活动的名称

Toast.makeText(this,"hello"+fd.get(position),Toast.LENGTH_LONG).show();
试试这个代码

public class MainActivity extends AppCompatActivity {
    ListView list;
    private ArrayList<String> fd;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list = findViewById(R.id.List);
        fd = new ArrayList<String>();
        fd.add("roda");
        fd.add("ghh");
        fd.add("asfff");
        fd.add("jll");
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,fd);
        list.setAdapter(arrayAdapter);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {                Toast.makeText(MainActivity.this,"hello"+fd.get(position),Toast.LENGTH_LONG).show();
            }
        });
    }
}

在类级别声明ArrayList对象

ListView list;
ArrayList<String> fd;
更改代码以显示toast消息,如下所示

Toast.makeText(MainActivity.this,"hello "+fd.get(position),Toast.LENGTH_LONG).show();

通过oncreate方法初始化列表我添加了另一个答案。试试那个。
fd = new ArrayList<String>();
Toast.makeText(MainActivity.this,"hello "+fd.get(position),Toast.LENGTH_LONG).show();