public class MainActivity extends Activity {
private static final String[] lakes = { "Superior","Victoria","Huron","lakhani","sagar","surat","pune","gujarat",
"baroda","jayesh","mahesh","suresh","chirag","laptop"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView)findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, lakes);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
AlertDialog.Builder abd = new AlertDialog.Builder(MainActivity.this);
abd.setTitle("selected item");
abd.setMessage("selected item is=" + listView.getItemAtPosition(View.SCROLLBAR_POSITION_DEFAULT));
abd.setPositiveButton("Ok", null);
abd.show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
this error diaplay
Gradle: local variable listView is accessed from within inner class; needs to be declared final
问问题
1114 次
7 回答
0
您有两个选项- 全局创建列表视图-
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listView);
或者让它成为最终的
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView listView = (ListView)findViewById(R.id.listView);
于 2013-08-21T05:50:16.310 回答
0
试试这个代码
final ListView listView = (ListView)findViewById(R.id.listView);
于 2013-08-21T05:50:36.083 回答
0
您可以为此更改 listview 声明:
final ListView listView = (ListView)findViewById(R.id.listView);
或者您在 onCreate 方法之外声明列表视图。
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listView);
于 2013-08-21T05:50:47.137 回答
0
尝试这个..
private static final String[] lakes = { "Superior","Victoria","Huron","lakhani","sagar","surat","pune","gujarat",
"baroda","jayesh","mahesh","suresh","chirag","laptop"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView listView = (ListView)findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, lakes);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
AlertDialog.Builder abd = new AlertDialog.Builder(MainActivity.this);
abd.setTitle("selected item");
abd.setMessage("selected item is=" + listView.getItemAtPosition(i));
abd.setPositiveButton("Ok", null);
abd.show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
于 2013-08-21T05:52:34.897 回答
0
您可以将您的列表视图声明为类成员,然后在 itemclick 内部
String s = (String) adapterView.getItemAtPosition(i);
使用字符串在对话框中显示它。
AlertDialog.Builder abd = new AlertDialog.Builder(MainActivity.this);
abd.setTitle("selected item");
abd.setMessage("selected item is=" + s);
abd.setPositiveButton("Ok", null);
abd.show();
如果您想在吐司中显示它。
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
于 2013-08-21T05:55:19.937 回答
0
函数
ListView listView = (ListView)findViewById(R.id.listView);
内部结束的作用域 。onCreate
因此,每次onCreate(savedInstanceState)
调用该函数时,都会创建您的 listView 对象,并从该函数为其设置值(ListView)findViewById(R.id.listView)
。
但是在函数结束时,对象被解散,并且您将不会
listView
在类中的其他任何地方拥有变量。
当您在onCreate
函数外部和MainActivity类内部创建变量时,问题就解决了
尝试阅读本文以进一步了解变量的范围
于 2013-08-21T06:09:23.647 回答
0
这应该工作
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Object s=adapterView.getItemAtPosition(i);
final String selectedItem=s.toString();
AlertDialog.Builder abd = new AlertDialog.Builder(MainActivity.this);
abd.setTitle("selected item");
abd.setMessage("selected item is=" + selectedItem);
abd.setPositiveButton("Ok", null);
abd.show();
}
});
}
于 2013-08-21T06:19:56.400 回答