从另一个类访问onCreate中的ArrayAdapter

时间:2011-03-31 14:57:08

标签: android adapter android-context

public class controller extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Context currentContext = this;
    final BlinkAPI blinkAPI = new BlinkAPI(currentContext);


    lvRadio = (ListView)findViewById(R.id.ListViewRadio);
    }
    ...
   }
   //***********************************
   //Separate file

   public class BlinkAPI {

private static Context mContext;
static ListView radioLV;


public BlinkAPI( Context ctx)
{
    BlinkAPI.mContext = ctx;

    radioLV = (ListView )((Activity) mContext).findViewById(R.id.ListViewRadio); 

}

private static void updateRadioTitles( )    {
        radioTitleAdapter = (ArrayAdapter<String>) radioLV.getAdapter();
        ...//Get titleStr etc
        radioTitleAdapter.add(titleStr);        
        radioTitleAdapter.notifyDataSetChanged(); 
}

此代码崩溃

3 个答案:

答案 0 :(得分:1)

首先:raukodraug和Flavio是对的!你可以打电话:

myAdapter = radioLV.getAdapter();

获取ListView的适配器。

但是你说,你想更新适配器。如果你想这样做,你的活动需要将该适配器保存为变量,如下所示:

private Adapter myAdapter;

如果您现在想要更新适配器,可以调用以下方法(确保在UI-Thread上进行这些调用,否则列表视图不会更新):

myAdapter.add(newItem); // whatever item you might want to add
myAdapter.notifyDataSetChanged();

答案 1 :(得分:0)

如果您有权访问ListView,则可以使用radioLV.getAdapter()

答案 2 :(得分:0)

您可以通过调用radioLV.getAdapter()

来获取适配器

但你无法修改它(添加\删除项目)。要修改它 - 创建并设置新的适配器,或者编写ArrayAdapter的扩展并向其添加方法setObjects。