2017-03-03 7 views
0

listviewを追加したいがエラーが出る。私はそれ??のみListViewコントロールとすべてのhttps://jsonplaceholder.typicode.com/usersユーザーを追加ListViewでAsynctaskを不正に開始する方法

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    myListView = (ListView) findViewById(R.id.listview); 




    txtResult = (TextView) findViewById(R.id.txt_result); 
    btnItemList = (Button) findViewById(R.id.btn_item_list); 



    /* btnItemList.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      new GetItemListTask().execute(); 
     } 
    }); 
}*/ 
public void populateListView(ArrayList<String> myData){ 

    myListView = (ListView) findViewById(R.id.listview); 

    //Creating an array adapter and populating it with data fetched in Async task i.e. myData 
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
      this, 
      android.R.layout.simple_list_item_1, 
      (List<String>) new GetItemListTask().execute()); 

    myListView.setAdapter(arrayAdapter); 
} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 


private void setResult(Post post) { 
    txtResult.setText(post.getName()); 
} 

private void setResult(ArrayList<Post> posts) { 
    for (Post post : posts) { 
     txtResult.append(post.getName()); 
    } 
} 



private class GetItemListTask extends AsyncTask<Void, Void, String> { 
    HttpURLConnection urlConnection; 

    @Override 
    protected String doInBackground(Void... params) { 
     StringBuilder result = new StringBuilder(); 
     try { 
      URL url = new URL("https://jsonplaceholder.typicode.com/users"); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 

      String line; 
      while ((line = reader.readLine()) != null) { 
       result.append(line); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      urlConnection.disconnect(); 
     } 

     return result.toString(); 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 
     ArrayList<Post> posts = new Gson().fromJson(s, 
       new TypeToken<ArrayList<Post>>() { 
       }.getType()); 
     setResult(posts); 
    } 
} 

}

私のイメージとエラー enter image description here

のための重要なアドバイスどのように行うことができます
+0

私はリストビューを追加したいが、私はあなたがボタンのアクションを削除し、非同期を呼び出したい –

+0

あなたの質問を理解していませんでしたボタンの外のタスク? –

+0

私のボタンを削除したい –

答えて

0

アクティビティでの非同期タスクの呼び出し

ボタンを押したときにasynタスクを実行するので、OnCreate()や他の場所で呼び出すことができるので、呼び出す場所によって異なります。

1.

new GetItemTask().execute();` 

2.

.post(new Runnable() { 
        public void run() { 

         new GetItemTask().execute(); 
         } 
        }); 
関連する問題