0

1週間前から問題が発生しています。カスタム リスト ビューを作成しました。ボタンをクリックすると、項目がリスト ビューに追加されます。すべての項目がリスト ビューに正常に表示されます。しかし、デバイスのライトをオフにして画面をスワイプすると、10 秒後にアイテムがListView消えます。xml の私のリスト ビュー:

<ListView
    android:id="@+id/lvEditItem"
    android:layout_width="fill_parent"
    android:layout_height="100dip"
    android:overScrollMode="never"
    android:layout_below="@+id/tvSelectToEdit"
    android:cacheColorHint="@android:color/transparent"
    android:paddingRight="10dip"
    android:scrollbars="none" >
</ListView>

私の活動ファイルは:-

ListView mView;
mView=(ListView)findViewById(R.id.lvEditItem);
mView.setDivider(null);
mView.setOnItemClickListener(new OnItemClickListener() {

private View lastSelectedView = null;

public void clearSelection()
{
    if(lastSelectedView != null)
       lastSelectedView.setBackgroundDrawable(getResources().getDrawable(android.R.color.transparent));
}


@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
   clearSelection();
   lastSelectedView = view;
   view.setBackgroundResource(R.color.lightGreen);

   String items=arrayList.get(position).toString();
   String s[]=items.split("~");

   System.out.println("value of Array>>>>>>>=="+s.length);

   tvGender.setVisibility(View.VISIBLE);

   tvCategory.setVisibility(View.VISIBLE);

   tvSubCategory.setVisibility(View.VISIBLE);

   tvStyle.setVisibility(View.VISIBLE);

   tvSize.setVisibility(View.VISIBLE);

   tvColor.setVisibility(View.VISIBLE);

   tvGender.setText(s[0]);
   GenderData.gender=s[0];
   tvGender.setTypeface(face);

   tvCategory.setText(s[1]);
   CategoryData.category=s[1];
   tvCategory.setTypeface(face);

   tvSubCategory.setText(s[2]);
   SubCategoryData.subCategory=s[2];
   tvSubCategory.setTypeface(face);

   brand.setText(s[3]);

   tvStyle.setText(s[4]);
   StyleData.style=s[4];
   tvStyle.setTypeface(face);

   tvSize.setText(s[5]);
   SizeData.size=s[5];
   tvSize.setTypeface(face);

   tvColor.setText(s[6]);
   ColorData.color=s[6];
   tvColor.setTypeface(face);

   String as=s[7].replace("$", "");
   price.setText(as);

   originalRetailer.setText(s[8]);

   originalLink.setText(s[9]);
});

私のアダプタクラスは次のとおりです。

public class CustomEditListAdapter extends BaseAdapter{

private LayoutInflater mInflater;
ArrayList<String> mArrayList;
ArrayList<String> mshowItemsOnListView;
Typeface face;
public CustomEditListAdapter(Context context,ArrayList<String> mArrayList,ArrayList<String> mshowItemsOnListView ) {
    mInflater = LayoutInflater.from(context);
    this.mArrayList=mArrayList;
    this.mshowItemsOnListView=mshowItemsOnListView;
    face=Typeface.createFromAsset(context.getAssets(), "tahoma.ttf");
     System.out.println("Final ArrayList which has to be post>>>"+mArrayList.toString());
}

@Override
public int getCount() {
   return ConcatData.mSet.size();
}

@Override
public Object getItem(int arg0) {
   return mshowItemsOnListView.get(arg0);
}

@Override
public long getItemId(int position) {
   return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
   ViewHolder holder;


   if (convertView == null) {
      convertView = mInflater.inflate(R.layout.custom_select_item_view, null);
      holder = new ViewHolder();
      holder.txtName = (TextView) convertView.findViewById(R.id.textView1);
      holder.txtName.setTypeface(face);

      convertView.setTag(holder);
   }
   else {
      holder = (ViewHolder) convertView.getTag();
   }

   // holder.txtName.setText(mArrayList.get(position));
   holder.txtName.setText(mshowItemsOnListView.get(position));
   return convertView;
}

static class ViewHolder {
   TextView txtName;
}
}

custom_select_item_view.xml は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

 <ImageView 
         android:id="@+id/ivArrow"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:src="@drawable/list_arrow_my_item_box"
         android:layout_alignParentLeft="true"
         android:layout_alignTop="@+id/textView1"
         android:padding="5dip"
         />

前もって感謝します!!

4

1 に答える 1

0

これはおそらくアクティビティのライフサイクルによるものです。 Android アクティビティのライフサイクルを参照してください - これらのメソッドは何のためにあるのでしょうか? 詳細については。

つまり、アプリケーションが一時停止または一時停止されている場合、そのリソースは細断処理され、アプリケーションが再開されたときに再構築されます。

このプロセスでは、追加されたアイテムのリストが破棄され、再構築されます。再構築中、追加されたアイテムも (明示的に) 復元する必要があります! そのため、アイテム情報を「安全な」場所に保存して、この保存された情報を使用してリスト アイテムを再構築できるようにします。

その方法の詳細については、永続的な状態の保存に関する Android ドキュメントを確認してください。

于 2012-12-20T11:50:14.557 に答える