如何在一个活动中使用两个hashmap arraylist?

时间:2016-05-24 06:48:18

标签: android performance listview android-fragments android-studio

伙计我正在研究一个Android项目,当我在一个活动中使用两个Hashmap arraylist而不是我的应用程序崩溃。我正在处理它过去两天但问题仍然存在。我尝试了所有解决方案和调试程序,并深入研究所有步骤。

public static ArrayList<HashMap<String, String>> arrayList;
public static ArrayList<HashMap<String, String>> arrayList1;

arraylist1在我评论arraylist之前没有工作。我无法理解这个问题,请提出任何解决方案。

java code ....

public class Dashboard extends Activity {
    public static Dashboard_Adapter adapter;
    public static list_adapter list_adapter;
    ListView listview;
    ListView Listnewpost;
    JSONObject jsonObject;
public static final String like_count = "like_count";
public static final String name1 = "name";
String like;
public static String name11;
public static ArrayList<HashMap<String, String>> arrayList;
    public static ArrayList<HashMap<String, String>> arrayList1;
     protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
    setContentView(R.layout.dashborad);
    listview = (ListView) findViewById(R.id.lvcomment);
    Listnewpost= (ListView) findViewById(R.id.lvShowPost);
    arrayList = new ArrayList<>();
    arrayList1= new ArrayList<>();
    new dash_board().execute();

}


private class dash_board extends AsyncTask<String, String, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressDialog = new ProgressDialog(Dashboard.this);
            progressDialog.setMessage("Please wait while your request is in progress.....");
            progressDialog.setIndeterminate(false);
            progressDialog.setCancelable(true);
            progressDialog.show();
        }



@Override
    protected String doInBackground(String... params) {
        int success;
        JSONObject response;
        int returnCode;
        //String result = "{\"Response\":{\"ReturnCode\":200,\"ReturnMessage\":\"Information Successfully Retrieved\",\"ReturnData\":null,\"ReturnClass\":{\"PRO_ID\":\"11111111-1111-1111-1111-111111111111\",\"PRO_FirstName\":\"SILVER\",\"PRO_LastName\":\"HIYO\"},\"FriendlyErrorMessage\":null}}";
        String data1 = "[{this is a flat json}];



       try {
            Log.d("hy one ","two");

            JSONArray jr=new JSONArray(data);

            HashMap<String, String> arre;
            for (int i=0;i<jr.length();i++) {
                jsonObject = jr.getJSONObject(i);
                like = jsonObject.getString(like_count);

                arre = new HashMap<>();
                arre.put("like_count", like);
                arrayList1.add(arre);
            }

                JSONArray jsonArray3=jsonObject.getJSONArray("comments");
                HashMap<String, String> arr;
                for(int j=0;j<jsonArray3.length();j++){
                    arr = new HashMap<>();
                    JSONObject jsonObject3 = jsonArray3.getJSONObject(j);
                    name11=jsonObject3.getString(name1);
                    Log.d("name value",name11);

                    arr.put("name",name11);
                    arrayList.add(arr);
                }

            Log.d("arraylist", String.valueOf(arrayList1.get(0)));


        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        progressDialog.dismiss();

        list_adapter= new list_adapter(Dashboard.this,arrayList1);          
        adapter=new Dashboard_Adapter(Dashboard.this,arrayList);


        listview.setAdapter(adapter);


       Listnewpost.setAdapter(list_adapter);



    }
}

2 个答案:

答案 0 :(得分:0)

做这样的事

    ArrayList<HashMap<String, String>> arrayList = new ArrayList<>();
    HashMap<String, String> stringStringHashMap = new HashMap<>();
    stringStringHashMap.put("key1","Hello 1");
    stringStringHashMap.put("key2","Hello 2");
    stringStringHashMap.put("key3","Hello 3");
    arrayList.add(stringStringHashMap);

    ArrayList<HashMap<String, String>> arrayList1 = new ArrayList<>();
    HashMap<String, String> stringStringHashMap1 = new HashMap<>();
    stringStringHashMap1.put("key1","Hello 1");
    stringStringHashMap1.put("key2","Hello 2");
    stringStringHashMap1.put("key3","Hello 3");
    arrayList1.add(stringStringHashMap1);

答案 1 :(得分:0)

在onCreate()方法上面创建Hashmap,而不是在onCreate()方法中创建(即,使hashmap&#39全局)。

  protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            PopulateContinentsDropDownList();


        }
        lblCheckEmail.Visible = false;
    }



    private void PopulateContinentsDropDownList()
    {
        DataSet ds = Data.spGetCountries();
        ddlCountry.DataSource = ds;
        ddlCountry.DataTextField = "CountryName";
        ddlCountry.DataValueField = "Country_Id";
        ddlCountry.DataBind();

        ListItem liCountry = new ListItem("Select Country");
        ddlCountry.Items.Insert(0, liCountry);

        ListItem liState = new ListItem("Select State");
        ddlState.Items.Insert(0, liState);

        ListItem liCity = new ListItem("Select City");
        ddlCity.Items.Insert(0, liCity);

        ListItem liCountryCode = new ListItem("Country Code");
        ddlCountrycode.Items.Insert(0, liCountryCode);

        ddlState.Enabled = false;
        ddlCity.Enabled = false;
    }

    protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlCountry.SelectedValue == "")
        {
            ddlState.SelectedIndex = 0;
            ddlCity.SelectedIndex = 0;
            ddlState.Enabled = false;
            ddlCity.Enabled = false;
            ddlCountrycode.SelectedIndex = 0;
            ddlCountrycode.Enabled = false;
        }
        else
        {
            ddlState.Enabled = true;

            DataSet ds = Data.spGetStateByCountryId(Convert.ToInt32(ddlCountry.SelectedValue));
            ddlState.DataSource = ds;
            ddlState.DataTextField = "StateName";
            ddlState.DataValueField = "State_Id";
            ddlState.DataBind();

            DataSet ds1 = Data.spGetCountrycode(Convert.ToInt32(ddlCountry.SelectedValue));
            ddlCountrycode.DataSource = ds1;
            ddlCountrycode.DataTextField = "CountryCode";
            ddlCountrycode.DataValueField = "Country_Id";
            ddlCountrycode.DataBind();

            //ddlCity.SelectedIndex = 0;
            //ddlCity.Enabled = false;
        }
    }

    protected void ddlState_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlState.SelectedValue == "")
        {
            ddlCity.SelectedIndex = 0;
            ddlCity.Enabled = false;
        }
        else
        {
            ddlCity.Enabled = true;

            DataSet ds = Data.spGetCityByStateId(Convert.ToInt32(ddlState.SelectedValue));
            ddlCity.DataSource = ds;
            ddlCity.DataTextField = "CityName";
            ddlCity.DataValueField = "City_Id";
            ddlCity.DataBind();


        }
    }

    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        DataSet ds = Data.spCheckEmail(txtEmail.Text);
        if (ds.Tables[0].Rows.Count > 0)
        {
            if (ds.Tables[0].Rows[0]["Email_Id"].ToString() == txtEmail.Text)
            {
                lblCheckEmail.Visible = true;
                lblCheckEmail.Text = "Email id already exists , please enter another email id.";
            }
            else
            {
                lblCheckEmail.Text = "";
                lblCheckEmail.Visible = false;
            }

        }
        else
        {

            Data objpro = new Data();
            string a = ddlYear.SelectedValue;
            string b = ddlMonth.SelectedValue;
            string c = ddlDate.SelectedValue;
            string DateofBirth = ddlDate.SelectedValue + "/" + ddlMonth.SelectedValue + "/" + ddlYear.SelectedValue;
            objpro.DOB = DateofBirth;
            objpro.Email_Id = txtEmail.Text;
            objpro.Password = txtPassword.Text;
            objpro.Acc_Currency = ddlCurrency.SelectedValue;
            objpro.FirstName = txtFirstName.Text;
            objpro.LastName = txtLastName.Text;
            objpro.Gender = ddlGender.SelectedValue;
            objpro.Address1 = txtAddress1.Text;
            objpro.Address2 = txtAddress2.Text;
            objpro.Country = ddlCountry.SelectedItem.Text;
            objpro.Region_State = ddlState.SelectedItem.Text;
            objpro.City = ddlCity.SelectedItem.Text;
            objpro.PostalCode = txtPostalCode.Text;
            objpro.Phone_Extension = ddlCountrycode.SelectedValue;
            objpro.PhoneNo = txtPhoneno.Text;


            if (Request.QueryString["Account_Id"] != null)
            {
                ID = Request.QueryString["Account_Id"];
            }
            else
            {
                ID = "0";
            }

            objpro.Account_Id = Convert.ToInt32(ID);
            int k = Data.CustomerInsert(objpro);

            Random randno = new Random();
            int cc = randno.Next(000000, 999999);
            string Uniqueid = "U" + cc;

            if (k != -1)
            {

                Data.spStoreUniqueId(k, Uniqueid);
            }

            Session["UniqueId"] = Uniqueid;
            Session["Email"] = txtEmail.Text;

            Page.ClientScript.RegisterStartupScript(Page.GetType(), "alert", "alert('Data Saved Successfully');window.location='JoininForm.aspx';", true);
            Response.Redirect("Welcome.aspx");
        }
    }



    protected void txtEmail_TextChanged(object sender, EventArgs e)
    {
        DataSet ds = Data.spCheckEmail(txtEmail.Text);
        if (ds.Tables[0].Rows.Count > 0)
        {
            if (ds.Tables[0].Rows[0]["Email_Id"].ToString() == txtEmail.Text)
            {
                lblCheckEmail.Visible = true;
                lblCheckEmail.Text = "Email id already exists , please enter another email id.";
            }

        }

    }