java एंड्रॉइड- setAdapter() में AsyncTask




android android-listview (2)

आप एडाप्टर। NotifyDataSetChanged () में कॉल नहीं कर रहे हैं। आपका कोड ऐसा दिखना चाहिए

@Override
protected void onPostExecute(ArrayList<String> result) {
    ...
    lvMain.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

मुझे AsyncTask के साथ ListView भरने की आवश्यकता है यह कोड काम करता है, TextView "आरंभ" में बदलता है, फिर "अंत"। लेकिन सूची दृश्य रिक्त है, दिखा नहीं रहा है लॉग में मैं "array = 3" देखता हूँ

package a.test3;

import java.util.ArrayList;

import a.test3.MainActivity;
import a.test3.R;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

    GrabURL mt;
    TextView textView;
    ListView lvMain;
    ArrayList<String> result_arr = new ArrayList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = new TextView(this);
        lvMain = (ListView) findViewById(R.id.listView1);

        mt = new GrabURL();
        mt.execute();
    }

    public class GrabURL extends AsyncTask<Void, Void, ArrayList<String>> {             
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            textView.setText("Begin");
            setContentView(textView);
        }

        @Override
        protected ArrayList<String> doInBackground(Void... params) {
            result_arr.add("a");
            result_arr.add("b");
            result_arr.add("c");
            return result_arr;
        }

        @Override
        protected void onPostExecute(ArrayList<String> result) {
            super.onPostExecute(result);

            Log.d("info", "array = " + result.size());

            textView.setText("End");
            setContentView(textView);

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
                    android.R.layout.simple_list_item_1, result);
            lvMain.setAdapter(adapter);
        }
    }
}

मुझे बताओ, कृपया, मैं क्या कर रहा हूँ गलत?


अपना कोड देखें

        textView.setText("End");
        setContentView(textView);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
                android.R.layout.simple_list_item_1, result_arr);
        lvMain.setAdapter(adapter);

आप अपनी गतिविधि के लिए देखें (लेआउट) सेट करते हैं। आप केवल यहाँ setContentView(textView); सेट setContentView(textView); । कोई ListView lvMain; जब आप अपनी गतिविधि के लिए एक ContentView के रूप में TextView सेट करते हैं तो अपने कंटेंटिव्यू में

इस लाइन को हटा दें

setContentView(textView);

अगर यह अभी भी जोड़ नहीं जोड़ रहा है

textView.invalidate();




android-adapter