简体   繁体   English

带有AsyncTask的Android GridView适配器

[英]Android GridView Adapter with AsyncTask

I parse XML from web and I want to put this data to GridView in other activity, can you help me? 我从Web解析XML,并希望在其他活动中将此数据放到GridView中,您能帮我吗?

My first activity: 我的第一个活动:

public class HomeScreenActivity extends Activity {
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.imageButton:
            Intent intent = new Intent(this, TopArtistsScreen.class);
            intent.putExtra("username", username);
            new DownloadXmlTask(this, HomeScreenActivity.this)
                    .execute("URL");
            startActivity(intent);
}

My AsyncTask 我的AsyncTask

public class DownloadXmlTask extends AsyncTask<String, Void, List<Artist>> {
    @Override
    protected void onPostExecute(List<Artist> result) {
        progressDialog.dismiss();
        gridView.setAdapter(new TopArtistsImageAdapter(context, result));
}

TopArtistsImageAdapter TopArtistsImageAdapter

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;
    if(convertView==null) {
        view = inflater.inflate(R.layout.items, null);
    }
    TextView textView = (TextView) view.findViewById(R.id.grid_item_name);
    ImageView imageView = (ImageView) view.findViewById(R.id.grid_item_image);
    textView.setText(artistsList.get(position).getName());
    imageLoader.DisplayImage(artistsList.get(position).getImage(), imageView);
    return view;
}

PS I shoud start another activity only after downloading all information PS我应该下载所有信息后才开始其他活动

I shoud start another activity only after downloading all information => Make changes as below: 我应该在下载所有信息后才开始其他活动=>进行如下更改:

1) Only execute your AsyncTask on button click 1)仅在单击按钮时执行AsyncTask

new DownloadXmlTask(this, HomeScreenActivity.this).execute("URL");

2) Start Activity inside onPostExecute() method of your AsyncTask: 2)在AsyncTask的onPostExecute()方法内启动Activity:

Intent intent = new Intent(HomeScreenActivity.this, TopArtistsScreen.class);
intent.putExtra("username", username);
startActivity(intent);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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