2017-03-03 7 views
0

Ich möchte ListView hinzufügen, weil es jetzt nur Textansicht sehen. Hier ist Haupttätigkeit und activity_mainWie kann ich AsyncTask in ListView tun

MainActivity

public class MainActivity extends AppCompatActivity 
{ 
    private TextView txtResult; 
    private Button btnItem; 
    private Button btnItemList; 
    private ListView myListView; 

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


     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 

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

     btnItem.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       new GetItemTask().execute(); 
      } 
     }); 

     btnItemList.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       new GetItemListTask().execute(); 
      } 
     }); 
    } 

    @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; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    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 GetItemTask 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/1"); 
       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); 
      Post post = new Gson().fromJson(s, Post.class); 
      setResult(post); 
     } 
    } 

    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); 
     } 
    } 
} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 


    <android.support.design.widget.CoordinatorLayout    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="etts.gsontest.MainActivity"> 



    <ListView 
     android:id="@+id/listView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentEnd="true" /> 

</android.support.design.widget.CoordinatorLayout> 

Das ist meine App

enter image description here

Antwort

0

Dies könnte Ihnen helfen:

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, 
      myData); 

    //Setting the array adapter to your list view 
    myListView.setAdapter(arrayAdapter); 
} 

Und dann können Sie diese Methode von `OnPostExecute()‘ Methode aufrufen.

0

Initialize ListView in OnCreate Method

listView = (ListView) findViewById(R.id.listView); 

PostExceute Method of AsyncTask

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
     this, 
     android.R.layout.simple_list_item_1, 
     myData); 

listView.setAdapter(arrayAdapter); 
Verwandte Themen