2014-06-09 74 views
10

即時通訊編寫一個應用程序,需要從我的數據庫中獲得一些json,我收到數據,但現在我試圖也查看旁邊顯示的信息圖標在一個列表視圖。.execute無法解析爲類型 - AsyncTask(Android)

這是製造麻煩的路線是:

mChart.setTag(URL); 
new DownloadImagesTask.execute(mChart); <------ 

MainActivity:

public class MainActivity extends Activity { 

    ListView list; 
    TextView icon; 
    TextView name; 
    TextView developer; 
    TextView size; 

    Button Btngetdata; 

    ArrayList<HashMap<String, String>> mList = new ArrayList<HashMap<String, String>>(); 

    private static String url = "http://appwhittle.com/getdata.php"; 

    private static final String TAG_ITEM = "app_item"; 
    private static final String TAG_ICON = "app_icon"; 
    private static final String TAG_NAME = "app_name"; 
    private static final String TAG_DEVELOPER = "app_developer"; 
    private static final String TAG_SIZE = "app_size"; 

    JSONArray mJsonArray = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mList = new ArrayList<HashMap<String, String>>(); 

     new JSONParse().execute(); 
    } 

    private class JSONParse extends AsyncTask<String, String, JSONObject> { 
     private ProgressDialog pDialog; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      icon = (TextView)findViewById(R.id.icon); 
      name = (TextView)findViewById(R.id.name); 
      size = (TextView)findViewById(R.id.size); 
      developer = (TextView)findViewById(R.id.developer); 

      pDialog = new ProgressDialog(MainActivity.this); 
      pDialog.setMessage("Getting Data ..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 

     @Override 
     protected JSONObject doInBackground(String... args) { 
     JSONParser jParser = new JSONParser(); 
     // Getting JSON from URL 
     JSONObject json = jParser.getJSONFromUrl(url); 

     return json; 
     } 
     @Override 
     protected void onPostExecute(JSONObject json) { 
     pDialog.dismiss(); 
     try { 
      mJsonArray = json.getJSONArray(TAG_ITEM); 
      for(int i = 0; i < mJsonArray.length(); i++){ 
      JSONObject c = mJsonArray.getJSONObject(i); 

      String name = c.getString(TAG_NAME); 
      String size = c.getString(TAG_SIZE); 
      String developer = c.getString(TAG_DEVELOPER); 
      String icon = c.getString(TAG_ICON); 

      HashMap<String, String> map = new HashMap<String, String>(); 
      map.put(TAG_ICON, icon); 
      map.put(TAG_NAME, name); 
      map.put(TAG_DEVELOPER, "Developer: " + developer); 
      map.put(TAG_SIZE, size + " MB");     


      mList.add(map); 
      list=(ListView)findViewById(R.id.list); 

      ListAdapter adapter = new SimpleAdapter(MainActivity.this, mList, 
       R.layout.list_v, 
       new String[] {TAG_NAME, TAG_DEVELOPER, TAG_SIZE }, new int[] { 
        R.id.name, R.id.developer, R.id.size}); 

      ImageView mChart = (ImageView) findViewById(R.id.icon); 
      String URL = "http://www...anything ..."; 

      mChart.setTag(URL); 
      new DownloadImagesTask.execute(mChart); 

      list.setAdapter(adapter); 
      list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, 
              int position, long id) { 
         Toast.makeText(MainActivity.this, "You Clicked at "+ mList.get(+position).get(TAG_NAME), Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     } 
    }   
} 

DownloadImagesTask:

public class DownloadImagesTask extends AsyncTask<ImageView, Void, Bitmap> { 

    ImageView imageView = null; 

    @Override 
    protected Bitmap doInBackground(ImageView... imageViews) { 
     this.imageView = imageViews[0]; 
     return download_Image((String)imageView.getTag()); 
    } 

    @Override 
    protected void onPostExecute(Bitmap result) { 
     imageView.setImageBitmap(result); 
    } 


    private Bitmap download_Image(String url) { 
     return null; 
     } 
    } 

任何幫助,非常感謝!提前致謝!

回答

38

更換

new DownloadImagesTask.execute(mChart); 

new DownloadImagesTask().execute(mChart); 

試試這個。它會工作。

+1

啊,謝謝,愚蠢的類型,我沒有看到。哈哈 –

0

變化:

new DownloadImagesTask.execute(mChart); 

到:

new DownloadImagesTask(mChart).execute(); 
+0

請隨時提供(小)描述的變化。該系統將其標記爲可能的低質量帖子。 –

0

你還沒有通過調用構造函數初始化你DownloadImagesTask的對象。

new DownloadImagesTask().execute(mChart);這樣使用。通過放置()來調用默認構造函數。

2

您需要更改後更改

new DownloadImagesTask.execute(mChart); 

new DownloadImagesTask().execute(mChart);. 

檢查,希望它工作正常。快樂編碼:)

0
//Suppose you have a class "DataFetcher" which extends "AsyncTask<Void,Void,Void>{}" 

//to execute this class write the code as follows 

new DataFetcher().execute(); //done