java - Android RecyclerView 未附加适配器,跳过布局

标签 java android api retrofit crud

我搜索到有关未连接适配器的错误。关于它有很多重复的问题并且有不同的答案,但没有任何东西可以解决我的错误。

所以,我正在使用 Retrofit 开发 CRUD 应用程序。我可以通过应用程序将数据插入数据库,但是当我尝试查看数据时,我的 RecyclerView 没有出现。

Logcat 消息:

RecyclerView: No adapter attached; skipping layout

这是我的 MainActivity.class

public class MainActivity extends AppCompatActivity {
Button btIns;
ApiInterface mApiInterface;
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
public static MainActivity ma;

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

    btIns = (Button) findViewById(R.id.btIns);
    btIns.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(MainActivity.this, InsertActivity.class));
        }
    });
    mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    mLayoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(mLayoutManager);
    mApiInterface = ApiClient.getClient().create(ApiInterface.class);
    ma=this;
    refresh();
}

public void refresh() {
    Call<GetKontak> kontakCall = mApiInterface.getKontak();
    kontakCall.enqueue(new Callback<GetKontak>() {
        @Override
        public void onResponse(Call<GetKontak> call, Response<GetKontak>
                response) {
            List<Kontak> KontakList = response.body().getListDataKontak();
            Log.d("Retrofit Get", "Jumlah data Kontak: " +
                    String.valueOf(KontakList.size()));
            mAdapter = new KontakAdapter(KontakList);
            mRecyclerView.setAdapter(mAdapter);
        }
        @Override
        public void onFailure(Call<GetKontak> call, Throwable t) {
            Log.e("Retrofit Get", t.toString());
        }
    });
}
}

最佳答案

Retrofit 回调在后台线程中执行,您无法在其中调用 setAdapter。创建适配器并通过调用 mRecyclerView.post(runnable) 将其设置在主线程中,其中 runnable 包含需要在主线程上执行的代码。

关于java - Android RecyclerView 未附加适配器,跳过布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803588/

相关文章:

java - 致命异常 : main/android. view.InflateException

java - 我用 Java 创建了一个服务,但它不在后台运行

java - Android HttpURLConnection 奇怪的响应

java - batchUpdate 如何锁定表/行

android - 如何删除溢出菜单 3 点?

android - 通过 xmpp 或 websocket 进行即时消息传递

android - 属性 "titleTextStyle"已经定义了吗?

javascript - 从 JS 数组向 Google map 添加标记

ios - 动态改变API数据获取结构

php - YouTube API 请求 : How could I get the Right token ( about Jim S. ' 代码 )