尝试返回时未显示ListView

时间:2016-05-10 16:48:40

标签: android listview

我已经使用模拟器测试了我的应用程序,一切都按预期工作。现在我通过USB调试调试应用程序。这是我遇到这个问题的时候。我的应用中有 ListView 。当用户按下列表项时,它会启动一个新活动。我的问题是,在用户按下后退按钮后,不再生成 ListView 。我只是一个空白活动。即使我重新启动应用程序,当我转到包含 ListView 的活动时,它也不会生成 ListView 。解决此问题的唯一方法是通过手机设置清除我的应用程序数据。是什么导致了这个问题?为什么它与模拟器兼容,而不是我的手机? (我使用小米Mi4)任何帮助将不胜感激。

CustomListAdapter

public class CustomListAdapter extends BaseAdapter {

private Activity activity;
private LayoutInflater inflater;
private List<Guide> guideItems;

public CustomListAdapter(Activity activity, List<Guide> guideItems) {
    this.activity = activity;
    this.guideItems = guideItems;
}

@Override
public int getCount() {
    return guideItems.size();
}
@Override
public Object getItem(int location) {
    return guideItems.get(location);
}
@Override
public long getItemId(int position) {
    return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {


    inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);       
    convertView = inflater.inflate(R.layout.customrow, parent, false);

    TextView ngno = (TextView) convertView.findViewById(R.id.txt_ListNgno);
    TextView name = (TextView) convertView.findViewById(R.id.txt_ListName);
    TextView email = (TextView) convertView.findViewById(R.id.txt_ListEmail);

    // getting movie data for the row
    Guide g = guideItems.get(position);

    ngno.setText(g.getNgno());      
    name.setText(g.getName());     
    email.setText(g.getEmail());

    return convertView;
    }
}

这是实现ListView的活动。

public class ViewGuidesActivity extends AppCompatActivity {

private static final String TAG = ViewGuidesActivity.class.getSimpleName();
private ProgressDialog pDialog;
private List<Guide> guideList = new ArrayList<Guide>();
private ListView listView;
private CustomListAdapter adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_guides);

    listView = (ListView) findViewById(R.id.list);
    adapter = new CustomListAdapter(this, guideList);
    listView.setAdapter(adapter);

    pDialog = new ProgressDialog(this);
    // Showing progress dialog before making http request
    pDialog.setMessage("Loading...");
    pDialog.show();

    // Creating volley request obj
    JsonArrayRequest movieReq = new JsonArrayRequest(AppConfig.URL_GET_GUIDE_LIST,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    Log.d(TAG, response.toString());
                    hidePDialog();

                    // Parsing json
                    for (int i = 0; i < response.length(); i++) {
                        try {

                            JSONObject obj = response.getJSONObject(i);
                            Guide guide = new Guide();
                            guide.setNgno(obj.getString("ngno"));
                            guide.setEmail(obj.getString("email"));
                            guide.setName(obj.getString("name"));


                            // adding movie to movies array
                            guideList.add(guide);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }

                    // notifying list adapter about data changes
                    // so that it renders the list view with updated data
                    adapter.notifyDataSetChanged();
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, error.toString());
            VolleyLog.d(TAG, "Error: " + error.getMessage());
            hidePDialog();

        }
    });

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(movieReq);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
            Guide newGuide = guideList.get(position);
            String email = newGuide.getEmail();
            String ngno = newGuide.getNgno();
            //System.out.println(email);

            Intent i = new Intent(getApplicationContext(), GuideDetails.class);
            i.putExtra("email", email);
            i.putExtra("ngno", ngno);
            startActivity(i);
        }
    });

}

@Override
public void onDestroy() {
    super.onDestroy();
    hidePDialog();
}

private void hidePDialog() {
    if (pDialog != null) {
        pDialog.dismiss();
        pDialog = null;
    }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    menu.getItem(1).setVisible(false);
    menu.getItem(2).setVisible(false);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch(item.getItemId()){
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
}



}

0 个答案:

没有答案