如何在整个活动中传递我的实例变量?

时间:2013-05-01 21:04:42

标签: java android variables object

我正在尝试制作自定义列表视图适配器。在我的public void函数中,我正在尝试设置适配器..(在从Web创建列表之后

这是我的onCreate():

rowItems = new ArrayList<RowItem>();
listView = (ListView) findViewById(R.id.list);
CustomListViewAdapter adapter = new CustomListViewAdapter(this,R.layout.activity_main, rowItems);
listView.setAdapter(adapter);

我的问题是:如何在我的活动中使用自定义列表视图适配器适配器变量????

这是一个片段,当我设置我的名字城市和图标,我尝试设置我的适配器

item.setTitle(p.getString("name"));
item.setDesc(p.getString("city"));
item.setImageId(p.getString("icon"));
rowItems.add(item);

listView.setAdapter(adapter);

但是eclipse无法找到它。我甚至试图在没有运气的情况下回忆公共无效函数中的实例....

有什么建议吗?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new ReadWeatherJSONFeedTask().execute();

    rowItems = new ArrayList<RowItem>();
    listView = (ListView) findViewById(R.id.list);
    CustomListViewAdapter adapter =
        new CustomListViewAdapter(this,R.layout.activity_main, rowItems);
    listView.setAdapter(adapter);
}

1 个答案:

答案 0 :(得分:1)

将声明移动到类字段中,如下所示:

public class MyActivity extends Activity{

    CustomListViewAdapter adapter;

    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new ReadWeatherJSONFeedTask().execute();

        rowItems = new ArrayList<RowItem>();

        listView = (ListView) findViewById(R.id.list);

        adapter = new CustomListViewAdapter(this,R.layout.activity_main, rowItems);

        listView.setAdapter(adapter);

    }


}

类字段可以在类的所有方法中访问。这都是关于“范围”的。在onCreate内声明适配器会限制它在该方法及其中声明的类的范围(它的可见性)。

顺便说一句,你没有说你为什么试图“重置”你的适配器,但通常,你应该只设置一次。