android - 从另一个类访问 onCreate 中的 ArrayAdapter

标签 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(); 
}

这段代码崩溃了

最佳答案

首先:raukodraug 和 Flavio 是对的!你可以调用:

myAdapter = radioLV.getAdapter();

获取ListView的适配器。

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

private Adapter myAdapter;

如果您现在想要更新适配器,您可以调用以下方法(确保您在 UI 线程上进行这些调用,否则 ListView 将不会更新):

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

关于android - 从另一个类访问 onCreate 中的 ArrayAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5501871/

相关文章:

java - ConstraintLayout 无法转换为 android.widget.TextView

android - 从 Fragment 获取 Activity 中的 Adapter

java - 在安卓上创建一个文件

java - 警报对话框不会显示

java - JSON 到 GSON 对象

android - 使用 IntentService 加载数据时处理连接更改

android - 为什么我的搜索栏左右两侧有空格?

android适配器行隐藏

android - 不引用Context如何获取AssetManager?

java - 使用 Javafx android-tools 创建 Android 项目后清空 bin、libs、src 文件夹