ListView再次重新加载后消失

时间:2014-08-12 12:51:10

标签: android listview arraylist

我有3个arraylist,我已合并在listview中显示。 Wehen我点击生成列表视图,第一次工作正常,但当我回击然后再次点击按钮时,列表视图什么也没显示。不确定是什么原因造成的。我检查了其他帖子,但无法找到答案。我对Arraylist不太好,所以任何细节都会非常感激。

我在Log cat中也注意到了这条消息。不确定这意味着什么。

调用onVisibilityChanged(),可见性:0

public class Edit extends Activity implements OnItemClickListener {

private int pic;
 public String filename ="User Info";
  //Declaring SHareddPreference as userprofile
    static SharedPreferences userprofile;
    ListView listView;
    List<RowItem> rowItems;
//  String[] titles, descriptions;
    File imgpath=null;
    Context context=this;
    CustomListAdapter adapter;
    private List<String> Titles = new ArrayList<String>();
    private List<String> Actions = new ArrayList<String>();
    private List<Bitmap> Images = new ArrayList<Bitmap>();

int x;
    int y=1;
 int z=1;
   static int a=1;


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

            listView = (ListView)findViewById(R.id.listing);


            userprofile = getSharedPreferences(filename,0); 
            Intent pdf=getIntent();
            pic= userprofile.getInt("lastpic",pic);
                 x=pic;
                 Log.d("editpic",new Integer(pic).toString());


            while(y!=x){

                String comment = commentresult();
                Titles.add(comment);
                y++;
                Log.d("y",new Integer(y).toString());
                }

            while(z!=x){

                String act = actionresult();
                Actions.add(act);
                z++;
                Log.d("z",new Integer(z).toString());}

            while(a!=x){

                Bitmap photo = getbitmap();
                Images.add(photo);
                a++;
                Log.d("a",new Integer(a).toString());}




            Titles.toArray();
            Actions.toArray();
            Images.toArray();



        rowItems = new ArrayList<RowItem>();
        for (int i = 0; i < Images.size(); i++) {
            RowItem item = new RowItem(Images.get(i), Titles.get(i),Actions.get(i));
            rowItems.add(item);
        }

        Log.d("TAG", "listview null? " + (listView == null));
        CustomListAdapter adapter = new CustomListAdapter(this,
                R.layout.aname_list_item, rowItems);
        Log.d("TAG", "adapter=null? " + (adapter == null));




        listView.setAdapter(adapter);
        adapter.notifyDataSetChanged();
        listView.setOnItemClickListener(this);

    }


    public static Bitmap getbitmap() {

        String photo1 =userprofile.getString("picpath"+a, "");
        File imgpath=new File(photo1);

         ByteArrayOutputStream stream = new ByteArrayOutputStream();

            Bitmap bmp=DecodeImage.decodeFile(imgpath, 800, 1000, true);
            bmp.compress(Bitmap.CompressFormat.JPEG, 100 , stream);
        Bitmap photo2=bmp;

    return photo2;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        Toast toast = Toast.makeText(getApplicationContext(),
            "Item " + (position + 1) + ": " + rowItems.get(position),
            Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
        toast.show();
    }






 public String commentresult()
 { 
//   String com2 = null;
//   while(y!=x){

    String comment=userprofile.getString("comment"+y, "");
    String com1=comment;
    String com2=com1;
//   }

 return com2;
 }

 public String actionresult()
 { 
// String act2 = null;
//   while(y!=x){
    String action=userprofile.getString("action"+z, "");
     String act1=action;
    String act2=act1;
//  }
     return act2;
 }



 private static final long delay = 2000L;
    private boolean mRecentlyBackPressed = false;
    private Handler mExitHandler = new Handler();
    private Runnable mExitRunnable = new Runnable() {

        @Override
        public void run() {
            mRecentlyBackPressed=false;   
        }
    };
    @Override
    public void onBackPressed() {

        //You may also add condition if (doubleBackToExitPressedOnce || fragmentManager.getBackStackEntryCount() != 0) // in case of Fragment-based add
        if (mRecentlyBackPressed) {
            mExitHandler.removeCallbacks(mExitRunnable);
            mExitHandler = null;
            super.onBackPressed();


        }
        else
        {
            mRecentlyBackPressed = true;
            Toast.makeText(this, "press again to exit", Toast.LENGTH_SHORT).show();
            mExitHandler.postDelayed(mExitRunnable, delay);
        }
    }

 @Override
  public void onDestroy() {
    // Destroy the AdView.

    super.onDestroy();
 }

自定义列表适配器:

 public class CustomListAdapter extends ArrayAdapter<RowItem> {

    Context context;
    List<RowItem> items;
    public CustomListAdapter(Context context, int resourceId,
        List<RowItem> items) {
    super(context, resourceId, items);
    this.context = context;
    this.items = items;
  }

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

  @Override
    public RowItem getItem(int position) {
        // TODO Auto-generated method stub
        return items.get(position);
    }

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

/*private view holder class*/
private class ViewHolder {
    ImageView imageView;
    TextView txtTitle;
    TextView txtDesc;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    RowItem rowItem = getItem(position);

    LayoutInflater mInflater = (LayoutInflater) context
            .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.aname_list_item, null);

        holder = new ViewHolder();
        holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
        holder.txtTitle = (TextView) convertView.findViewById(R.id.rab);
        holder.imageView = (ImageView) convertView.findViewById(R.id.icon);
        convertView.setTag(holder);
    } else
        holder = (ViewHolder) convertView.getTag();


//  String name=items.get(position).getDesc();

    holder.txtDesc.setText(rowItem.getDesc());
    holder.txtTitle.setText(rowItem.getTitle());
    holder.imageView.setImageBitmap(rowItem.getImageId());
//   holder.imageView.setImageResource(Images.get(position) .getPlaceholderleft());

    return convertView;
}
 }

2 个答案:

答案 0 :(得分:1)

看起来这是因为您已经创建了变量x,y,z和全部static,这意味着该类的所有实例共享一个变量实例。因此,当您第二次调用onCreate时,所有while循环终止条件都已满足,因此while循环永远不会执行。我不清楚为什么你做了这些static,所以除非你需要它们,否则你应该删除这些变量的static关键字。

答案 1 :(得分:0)

为什么要在ListViewonCreate()中创建onResume()的另一个对象

onResume()

中删除代码

也在onCreate()中替换此行 旧行ListView listView = (ListView)findViewById(R.id.listing);

换行listView = (ListView)findViewById(R.id.listing);