mMediaAdapter = new MediaAdapter(loadDataFromMediaStore());中loadDataFromMediaStore()标红
时间: 2023-12-03 09:47:35 浏览: 12
loadDataFromMediaStore()标红可能是因为该方法不存在或者未定义。您需要先定义该方法并返回从媒体库加载的数据,然后才能将其传递给 MediaAdapter 类。例如:
```
private ArrayList<Media> loadDataFromMediaStore() {
// 从媒体库加载数据
ArrayList<Media> mediaList = new ArrayList<>();
// ...
return mediaList;
}
mMediaAdapter = new MediaAdapter(loadDataFromMediaStore());
```
请注意,此处的 `Media` 类是您自己定义的媒体数据类。
相关问题
mMediaAdapter = new MediaAdapter(loadDataFromMediaStore());啥意思
这是 Android 开发中创建一个 `MediaAdapter` 的实例对象,同时从媒体库中加载数据并传递给该适配器。具体解释如下:
第一步:调用 `loadDataFromMediaStore()` 方法从媒体库中加载数据,该方法返回一个包含媒体数据的列表。
第二步:使用 `new MediaAdapter(媒体数据列表)` 创建一个 `MediaAdapter` 的实例对象,该适配器用于将媒体数据列表中的数据显示到 RecyclerView 中。
第三步:将创建好的 `MediaAdapter` 对象赋值给 `mMediaAdapter` 变量,以便之后使用。
综上所述,这行代码的作用是创建一个适配器并从媒体库中加载数据。
new Thread(){ public void run(){ List<MediaAdapter.dataElem> dataelem =new ArrayList<>(); user = userDao.getALLUsers(); for(User i:user){ MediaAdapter.dataElem elem=new MediaAdapter.dataElem(); //循环实例化 elem.PictureTitle=i.PictureTitle; elem.PicturePath=i.PicturePath; dataelem.add(elem); } Log.d("dataelem0",dataelem.get(0).PicturePath); Log.d("dataelem0",dataelem.get(0).PictureTitle); //Log.d("dataelem0",dataelem.get(0).image01ID); myDB.close(); runOnUiThread(new Runnable() { @Override public void run() { mMediaAdapter=new MediaAdapter(dataelem); mRecyclerView.setAdapter(mMediaAdapter); } }); } }.start();不能运行
这段代码有一个问题,就是在子线程中访问了 UI 界面的控件 `mRecyclerView`,这会导致程序崩溃。你需要在主线程中访问 UI 界面的控件。可以使用 `runOnUiThread()` 方法将更新 UI 界面的代码放在主线程中执行。修改后的代码如下:
```java
new Thread() {
public void run() {
List<MediaAdapter.dataElem> dataelem = new ArrayList<>();
user = userDao.getALLUsers();
for (User i : user) {
MediaAdapter.dataElem elem = new MediaAdapter.dataElem(); //循环实例化
elem.PictureTitle = i.PictureTitle;
elem.PicturePath = i.PicturePath;
dataelem.add(elem);
}
Log.d("dataelem0", dataelem.get(0).PicturePath);
Log.d("dataelem0", dataelem.get(0).PictureTitle);
//Log.d("dataelem0",dataelem.get(0).image01ID);
myDB.close();
runOnUiThread(new Runnable() {
@Override
public void run() {
mMediaAdapter = new MediaAdapter(dataelem);
mRecyclerView.setAdapter(mMediaAdapter);
}
});
}
}.start();
```
阅读全文