简体   繁体   中英

How to adapt this code in AsyncTask in Android?

I would like to adapt this code to a AsyncTask class, is it possible? Could anyone help? And how could I get data from internet and display it THROUGH the AsyncTask class?

My current code:

MainActivity:

public class MainActivity extends Activity {

    private CardContainer mCardContainer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.mainlayout);


        mCardContainer = (CardContainer) findViewById(R.id.layoutview);

        Resources r = getResources();

        SimpleCardStackAdapter adapter = new SimpleCardStackAdapter(MainActivity.this);

        adapter.add(new CardModel("Title1", "Description goes here", r.getDrawable(R.drawable.cats)));
        adapter.add(new CardModel("Title2", "Description goes here", r.getDrawable(R.drawable.puppy)));
        adapter.add(new CardModel("Title3", "Description goes here", r.getDrawable(R.drawable.sachin)));

        CardModel cardModel = new CardModel(null,null);
        cardModel.setOnClickListener(new CardModel.OnClickListener() {
            @Override
            public void OnClickListener() {
                // Log.i("Swipeable Cards","I am pressing the card");
                Toast.makeText(getApplicationContext(), "Pressing", Toast.LENGTH_SHORT).show();
            }
        });

        cardModel.setOnCardDimissedListener(new CardModel.OnCardDimissedListener() {
            @Override
            public void onLike() {
                //Log.i("Swipeable Cards","I like the card");
                Toast.makeText(getApplicationContext(), "I like this", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onDislike() {
                // Log.i("Swipeable Cards","I dislike the card");
                Toast.makeText(getApplicationContext(), "I dislike this", Toast.LENGTH_SHORT).show();
            }
        });

        adapter.add(cardModel);

        mCardContainer.setAdapter(adapter);
    }

}

CardModel.class

public class CardModel {

    private String   title;
    private String   description;
    private Drawable cardImageDrawable;
/*  private Drawable cardLikeImageDrawable;
    private Drawable cardDislikeImageDrawable;*/

    private OnCardDimissedListener mOnCardDimissedListener = null;

    private OnClickListener mOnClickListener = null;

    public interface OnCardDimissedListener {
        void onLike();
        void onDislike();
    }

    public interface OnClickListener {
        void OnClickListener();
    }

    public CardModel(String string, Drawable drawable) {
        this(null, null, (Drawable)null);
    }

    public CardModel(String title, String description, Drawable cardImage) {
        this.title = title;
        this.description = description;
        this.cardImageDrawable = cardImage;
    }

    public CardModel(String title, String description, Bitmap cardImage) {
        this.title = title;
        this.description = description;
        this.cardImageDrawable = new BitmapDrawable(null, cardImage);
    }

    public CardModel(HashMap<String, String> map) {
        this.title = title;
        this.description = description;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Drawable getCardImageDrawable() {
        return cardImageDrawable;
    }

    public void setCardImageDrawable(Drawable cardImageDrawable) {
        this.cardImageDrawable = cardImageDrawable;
    }

    /*public Drawable getCardLikeImageDrawable() {
        return cardLikeImageDrawable;
    }

    public void setCardLikeImageDrawable(Drawable cardLikeImageDrawable) {
        this.cardLikeImageDrawable = cardLikeImageDrawable;
    }

    public Drawable getCardDislikeImageDrawable() {
        return cardDislikeImageDrawable;
    }

    public void setCardDislikeImageDrawable(Drawable cardDislikeImageDrawable) {
        this.cardDislikeImageDrawable = cardDislikeImageDrawable;
    }
*/
    public void setOnCardDimissedListener( OnCardDimissedListener listener ) {
        this.mOnCardDimissedListener = listener;
    }

    public OnCardDimissedListener getOnCardDimissedListener() {
       return this.mOnCardDimissedListener;
    }


    public void setOnClickListener( OnClickListener listener ) {
        this.mOnClickListener = listener;
    }

    public OnClickListener getOnClickListener() {
        return this.mOnClickListener;
    }
}

This is how an AsyncTask works, you should also specify what the asynctask has to do with your code

public class ProgressTask extends AsyncTask<String, Void, String> {

    private DefaultHttpClient httpclient;
    private ProgressDialog dialog;
    private Context context;

    private static final String URL = "";

    public ProgressTask(DefaultHttpClient client) {
        this.dialog = new ProgressDialog(context);
        this.httpclient = client;
    }
//this is used to interact with the view objects or its childs before making requests to the website
    protected void onPreExecute() {
        this.dialog.setMessage("Loading");
        this.dialog.show();
    }

    @Override
    protected void onPostExecute(String params) {
        if (dialog.isShowing()) {
            dialog.dismiss();

        }

        //do what you want (the onPostExecute method is used to interact with view objects or its child)
    }

//this code execute an async request to the URL page using POST and returns a string reponse to the onPostExecute method
    protected String doInBackground(final String... args) {
        HttpPost httppost = new HttpPost(URL);
        try {

            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();

            return EntityUtils.toString(entity);

        } catch (ClientProtocolException e) {           // TODO Auto-generated catch block
        } catch (IOException e) {
        }

        return null;
    }
}

and you can call it doing

ProgressTask pt = new ProgressTask(new DefaultHttpClient());
pt.execute(//string params);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM