使用RecyclerView出現(xiàn)Only the original thread that created a view hierarchy can touch its views異常

使用RecyclerView出現(xiàn)Only the original thread that created a view hierarchy can touch its views異常
請看我的代碼

packagecom.liqipeter.fruits;

importandroid.os.Handler;

importandroid.os.Message;

importandroid.support.annotation.NonNull;

importandroid.support.design.widget.FloatingActionButton;

importandroid.support.design.widget.NavigationView;

importandroid.support.design.widget.Snackbar;

importandroid.support.v4.view.GravityCompat;

importandroid.support.v4.widget.DrawerLayout;

importandroid.support.v7.app.ActionBar;

importandroid.support.v7.app.AppCompatActivity;

importandroid.os.Bundle;

importandroid.support.v7.widget.GridLayoutManager;

importandroid.support.v7.widget.LinearLayoutManager;

importandroid.support.v7.widget.RecyclerView;

importandroid.support.v7.widget.Toolbar;

importandroid.util.Log;

importandroid.view.Menu;

importandroid.view.MenuItem;

importandroid.view.View;

importandroid.widget.Toast;

importcom.android.volley.VolleyError;

importcom.android.volley.toolbox.StringRequest;

importcom.android.volley.toolbox.Volley;

importcom.google.gson.Gson;

importorg.json.JSONException;

importjava.util.ArrayList;

importokhttp3.OkHttpClient;

importokhttp3.Request;

importokhttp3.Response;

public classMainActivityextendsAppCompatActivity {

privateFruitAdapterfruitAdapter;

privateDrawerLayoutmDrawerLayout;

public static? final intNEWS_DATA=1;

privateRecyclerViewrecyclerView;

privateStringurl="http://v.juhe.cn/toutiao/index?type=top&key=";

privateHandlerhandler=newHandler(){

@Override

public voidhandleMessage(Message msg) {

switch(msg.what){

caseNEWS_DATA:

recyclerView.setAdapter(fruitAdapter);

break;

default:

}

}

};

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

mDrawerLayout= (DrawerLayout)findViewById(R.id.drawer_layout);

NavigationView navView=(NavigationView)findViewById(R.id.nav_view);

FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);

recyclerView=(RecyclerView)findViewById(R.id.recycler_view);

GridLayoutManager layoutManager =newGridLayoutManager(this,2);

layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

recyclerView.setLayoutManager(layoutManager);



fab.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View v) {

Snackbar.make(v,"Data deleted",Snackbar.LENGTH_SHORT).setAction(

"Undo", newView.OnClickListener() {

@Override

public voidonClick(View v) {

Toast.makeText(MainActivity.this,"sdf",Toast.LENGTH_SHORT).show();

}

}).show();

}

});

ActionBar actionBar = getSupportActionBar();

if(actionBar !=null){

actionBar.setDisplayHomeAsUpEnabled(true);

actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);

}

navView.setCheckedItem(R.id.nav_call);

navView.setNavigationItemSelectedListener(newNavigationView.OnNavigationItemSelectedListener() {

@Override

public booleanonNavigationItemSelected(@NonNullMenuItem item) {

mDrawerLayout.closeDrawers();

return true;

}

});

getData();

}

@Override

public booleanonCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.toolbar,menu);

return true;

}

@Override

public booleanonOptionsItemSelected(MenuItem item) {

switch(item.getItemId()){

caseandroid.R.id.home:

mDrawerLayout.openDrawer(GravityCompat.START);

break;

caseR.id.backup:

Toast.makeText(this,"sdf",Toast.LENGTH_SHORT).show();

break;

caseR.id.delete:

Toast.makeText(this,"sdf",Toast.LENGTH_SHORT).show();

break;

caseR.id.settings:

Toast.makeText(this,"sdf",Toast.LENGTH_SHORT).show();

break;

default:

}

return true;

}

private voidgetData() {

newThread(newRunnable() {

@Override

public voidrun() {

try{

OkHttpClient client =newOkHttpClient();

Request request =newRequest.Builder().url(url).build();

Response response = client.newCall(request).execute();

String responseData = response.body().string();

showResponse(responseData);

}catch(Exception e){

e.printStackTrace();

}

}

}).start();

}

private voidshowResponse(String responseData)throwsJSONException {

Gson gson =newGson();

Bean bean = gson.fromJson(responseData,Bean.class);

ArrayList dataBeen = (ArrayList) bean.getResult().getData();

fruitAdapter=newFruitAdapter(dataBeen);

GridLayoutManager layoutManager =newGridLayoutManager(this,2);

layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

recyclerView.setLayoutManager(layoutManager);

Message message =newMessage();

message.what=NEWS_DATA;

handler.sendMessage(message);

}

}




之前我百度了明场,我以為是需要我開線程仗岖,所以我就用了Handler 結(jié)果發(fā)現(xiàn)還是存在這個異常哩至。

然后我就把

GridLayoutManager layoutManager =newGridLayoutManager(this,2);

layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

recyclerView.setLayoutManager(layoutManager);

這三句話提到了前面也就是我初始化控件的那里

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

mDrawerLayout= (DrawerLayout)findViewById(R.id.drawer_layout);

NavigationView navView=(NavigationView)findViewById(R.id.nav_view);

FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);

recyclerView=(RecyclerView)findViewById(R.id.recycler_view);

GridLayoutManager layoutManager =newGridLayoutManager(this,2);

layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

recyclerView.setLayoutManager(layoutManager);

。慨丐。。泄私。房揭。。晌端。崩溪。。斩松。伶唯。。后背省略惧盹。最后成功顯示了乳幸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钧椰,隨后出現(xiàn)的幾起案子粹断,更是在濱河造成了極大的恐慌,老刑警劉巖嫡霞,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓶埋,死亡現(xiàn)場離奇詭異,居然都是意外死亡诊沪,警方通過查閱死者的電腦和手機养筒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來端姚,“玉大人晕粪,你說我怎么就攤上這事〗ヂ悖” “怎么了巫湘?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵装悲,是天一觀的道長。 經(jīng)常有香客問我尚氛,道長诀诊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任阅嘶,我火速辦了婚禮属瓣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奈懒。我一直安慰自己奠涌,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布磷杏。 她就那樣靜靜地躺著溜畅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪极祸。 梳的紋絲不亂的頭發(fā)上慈格,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音遥金,去河邊找鬼浴捆。 笑死,一個胖子當著我的面吹牛稿械,可吹牛的內(nèi)容都是我干的选泻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼美莫,長吁一口氣:“原來是場噩夢啊……” “哼页眯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厢呵,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤窝撵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后襟铭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碌奉,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年寒砖,在試婚紗的時候發(fā)現(xiàn)自己被綠了赐劣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡入撒,死狀恐怖隆豹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茅逮,我是刑警寧澤璃赡,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站献雅,受9級特大地震影響碉考,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挺身,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一侯谁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧章钾,春花似錦墙贱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至府寒,卻和暖如春魁衙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背株搔。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工剖淀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纤房。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓纵隔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親炮姨。 傳聞我的和親對象是個殘疾皇子捌刮,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容