变量“适配器”和声明最终的问题。我的IDE一直在告诉“适配器”需要声明为最终,我在哪里以及如何做到这一点?这让我陷入停顿,我似乎无法继续前进。请帮助。它在这里参考了这段代码和问题:来自ListView的Android ImageView
package com.example.androidhive;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Intent;
import android.widget.TextView;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class CustomizedListView extends Activity {
// All static variables
static final String URL = "http://imforchange.org/international-movement-for-change/testing/data.xml";
// XML node keys
static final String KEY_EVENT = "event"; // parent node
static final String KEY_ID = "eventId";
static final String KEY_TITLE = "eventName";
static final String KEY_DESCRIPTION = "eventDescription";
static final String KEY_ABSTRACT = "eventAbstract";
static final String KEY_DATE = "eventDate";
static final String KEY_PRICE = "eventPrice";
static final String KEY_LINK = "eventLink";
static final String KEY_ADDRESS = "eventAddress";
static final String KEY_CUSTOM_LINK = "eventCustomlink";
static final String KEY_PICTURE = "eventPicture";
static final String KEY_ICON = "eventIcon";
ListView list;
LazyAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
LazyAdapter adapter = new LazyAdapter(this, songsList);
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_EVENT);
// looping through all song nodes <song>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_DESCRIPTION, parser.getValue(e, KEY_DESCRIPTION));
map.put(KEY_ABSTRACT, parser.getValue(e, KEY_ABSTRACT));
map.put(KEY_DATE, parser.getValue(e, KEY_DATE));
map.put(KEY_PRICE, parser.getValue(e, KEY_PRICE));
map.put(KEY_LINK, parser.getValue(e, KEY_LINK));
map.put(KEY_ADDRESS, parser.getValue(e, KEY_ADDRESS));
//map.put(KEY_CUSTOM_LINK, parser.getValue(e, KEY_CUSTOM_LINK));
map.put(KEY_PICTURE, parser.getValue(e, KEY_PICTURE));
map.put(KEY_ICON, parser.getValue(e, KEY_ICON));
// adding HashList to ArrayList
songsList.add(map);
}
list=(ListView)findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);
// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// Get the item that was clicked
HashMap<String, String> map = adapter.getItem(position);
// Starting new intent
Intent in = new Intent(getApplicationContext(), DetailView.class);
in.putExtra(KEY_TITLE, map.get(KEY_TITLE));
in.putExtra(KEY_PICTURE, map.get(KEY_PICTURE));
in.putExtra(KEY_DESCRIPTION, map.get(KEY_DESCRIPTION));
in.putExtra(KEY_PRICE, map.get(KEY_PRICE));
in.putExtra(KEY_LINK, map.get(KEY_LINK));
startActivity(in);
}
});
}
}
当您试图访问重写方法(如“onItemClick”方法)中的外部变量时,需要将该变量设为final。通过将关键字“final”放在变量声明之前,可以很容易地完成此操作。另一种方法是将该变量设为成员变量。查看此帖子以了解有关成员变量的更多信息。https://stackoverflow.com/a/9332462/661074
您没有发布声明变量“adapter”的代码,只是在前面放了一个“final”修饰符,您应该没事了。
我知道这个话题听起来像是重复的,但我并不是想在这里调试这个问题,而是想绕过它。 我的程序应该做的是:对于文件夹中的每个文件,创建一个新按钮。如果您单击此按钮,请输入您刚输入的文件夹的名称。 现在我遇到的问题是,“fileName”变量需要放在final中,因为Java提供的是对象的指针,而不是值本身。但如果我这样做,则只会为任何按钮发送最后选择的文件名。
我的代码有上述错误。我尝试通过将我的btnsav声明为最终版本来修复此问题,但随后我收到另外两个错误: 未知类:“btnsave” 不是一个声明 你知道我如何修复这个错误吗?
我正在尝试让一个按钮将其值与其他变量进行比较。在onClick方法中,我收到一个错误,说变量在内部类中被访问,需要声明为最终变量。问题是变量应该被更改,所以我无法使其成为最终变量。我如何解决这个问题?这是我的代码:
问题内容: 尝试在内部类内部使用一个类的本地成员时遇到此错误。我知道将其声明为final将解决此问题,但我读到Java 8应该自动处理它,因为我将Intellij与Java 8一起使用,但它仍然无法编译。还有其他方法可以在不将其声明为final的情况下进行修复吗?谢谢。 问题答案: 我知道将其声明为final将解决此问题,但我读到Java 8应该自动处理它。 如果变量 有效地为final ,则Ja
我正在尝试创建一个布局为“是”或“否”的警报对话框。我想通过单击“否”按钮而不是对话框视图来关闭该对话框。Disclose() 有错误。 这是我的密码。
我已经签出了答案,比如变量是在内部类中访问的。需要被宣布为最终,但它没有解决我想要的。 我正在使用GraphView绘制从Google Firebase检索到的数据。数据应该是如下所示的连续线: 但当我运行程序时,它却是这样进行的: 我应该做些什么来解决这个问题?任何形式的帮助都将不胜感激。谢谢!