java - 如何将ArrayList发送到BaseAdapter Android

标签 java android json arraylist baseadapter

我想将我的 JSON 显示到 gridview 中,在此之前..我将我的 JSON 显示到 ListView 中,并且它有效。但在 BaseAdapter 中,我不知道如何将放入 ArrayList 的 JSON 发送到 Base Adapter

这是我的源代码:

Activity :

    public class MainActivity extends ListActivity {
    List AgenList = new ArrayList();
        boolean boolStatusKoneksi=true;
        private ProgressDialog Dialog;
        protected Context applicationContext;
        @Override
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);     
            setContentView(R.layout.activity_main);
            new AgenAsyncTask().execute();
            GridView gridview = (GridView) findViewById(R.id.gridview);
            gridview.setAdapter(new AgenAdapter(this));
        }


    public class AgenAsyncTask extends AsyncTask<String, String, String>
    {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            Dialog = new ProgressDialog(MainActivity.this);
            Dialog.setMessage("Mohon Tunggu sebentar...");
            Dialog.setIndeterminate(false);
            Dialog.setCancelable(true);
            Dialog.show();
        }


        protected String doInBackground(String... args) {

                 String url = ("http:10.10.2/selectAgent.htm");

                  try{
                      JSONParser j=new JSONParser();
                        JSONArray jsonArray = j.takeJson(url);;

                      for(int i =0; i<jsonArray.length(); i++){
                          JSONObject c  = jsonArray.getJSONObject(i);


                            HashMap<String, String> map = new HashMap<String, String>();
                            if (c.has("atasan")) 
                                map.put("atasan", c.get("atasan").toString());
                            if (c.has("nama_agen")) 
                                map.put("nama_agen", c.get("nama_agen").toString());
                            if (c.has("kode_agen")) 
                                map.put("kode_agen", c.get("kode_agen").toString());
                            if (c.has("no_aaji")) 
                                map.put("no_aaji", c.get("no_aaji").toString());
                            if (c.has("jenis")) 
                                map.put("jenis", c.get("jenis").toString());
                              AgenList.add(map);
                         }
                    } catch (JSONException e) {
                        e.printStackTrace();
                        }
                  return null;
                    }


        @Override
        protected void onPostExecute(String file_url) {

       }
   }

这是我的 BaseAdapter:

    public class AgenAdapter extends BaseAdapter {

        public AgenAdapter(MainActivity mainActivity) {

        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater layout = getLayoutInflater();
            View view= layout.inflate(R.layout.list_item,parent,false);

            TextView ATASAN = (TextView) findViewById(R.id.atasan);
            TextView NAMA_AGEN= (TextView) findViewById(R.id.nama_agen);
            TextView KODE_AGEN= (TextView) findViewById(R.id.kode_agen);
            TextView NO_AAJI= (TextView) findViewById(R.id.no_aaji);
            TextView JENIS= (TextView) findViewById(R.id.jenis);
            return view;
        }
    }
}

如您所见,我将 ArrayList 命名为 = AgenList,但我尚未将其放入我的 BaseAdapter 中。

最佳答案

创建一个参数化构造函数并将数组列表传递到其参数中。所以你的类(class)就像

public class AgenAdapter extends BaseAdapter {
List<yourObj> list;
Activity a;
    public AgenAdapter(Activity activity,List<yourObj> list) {
       this.a=activity;
       this.list=list;

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();///////return size of list
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;///// dont return null here
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;/////////return position as itemID
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater layout = getLayoutInflater();
        View view= layout.inflate(R.layout.list_item,parent,false);

        TextView ATASAN = (TextView) findViewById(R.id.atasan);
        TextView NAMA_AGEN= (TextView) findViewById(R.id.nama_agen);
        TextView KODE_AGEN= (TextView) findViewById(R.id.kode_agen);
        TextView NO_AAJI= (TextView) findViewById(R.id.no_aaji);
        TextView JENIS= (TextView) findViewById(R.id.jenis);
        return view;
    }
}

关于java - 如何将ArrayList发送到BaseAdapter Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802487/

相关文章:

Android:如何检测当前堆栈的 Activity (任务)是否移至后台?

json - 获取 AJAX 使用从 Flask 发送的 JSON 数据填充数据表并单独渲染 html

php - 在 laravel postgres 中搜索多维 jsonb 数据

java - 将图像添加到标签而不使用文件路径

java - Apache Camel 路由到路由时生成异常

android - Sugar ORM Android 多数据库

javascript - 将 null 值替换为数组中的字符串,该字符串是 JSON 输出 - V2.0

java - Android - Android4.0中的MediaPlayer异常

c# - 我可以访问未序列化的内部类吗

java - 使用扩展类