2012-06-28 172 views
2

我正在使用列表視圖和適配器來加載列表,每個列表項都有一個TextView,EditText和Image..I設置箭頭和Edit文本的可見性。到列表行的位置,一切工作正常,當我第一次加載列表... 但是,當我滾動列表中,項目的可見性不斷變化...請幫助我在這個問題上...相關的代碼已經被附...滾動時項目的可見性ListView

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:orientation="horizontal" android:background="#FFFFFF"> 
    <TextView android:layout_height="wrap_content" android:layout_width="0dip" 
      android:textSize="20dip" android:layout_weight="1" 
      android:id="@+id/textview_add_lot_list" android:textColor="@android:color/black" 
      android:paddingTop="10dip" android:paddingBottom="10dip" 
      android:paddingLeft="10dip"/> 
    <EditText android:layout_height="fill_parent" android:layout_width="0dip" 
      android:layout_weight="1" android:id="@+id/et_add_lot_list" 
      android:layout_gravity="center_vertical"/> 
    <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" 
      android:id="@+id/imageview_arrow_add_lot_list" android:layout_gravity="center_vertical" 
      android:visibility="invisible" android:src="@drawable/more_reviews_arrow" 
      android:paddingRight="10dip"/> 
</LinearLayout> 

Java代碼的活動......

final ArrayList<String> listItems  = new ArrayList<String>(); 
     listItems.add("Parking name"); 
     listItems.add("Address"); 
     listItems.add("City"); 
     listItems.add("State"); 
     listItems.add("Zip"); 
     listItems.add("Phone"); 
     listItems.add("Web Address"); 
     listItems.add(" "); 
     listItems.add("Parking Image"); 
     listItems.add(" "); 
     listItems.add("Open Hours"); 
     listItems.add(" "); 
     listItems.add("Web Reviews"); 

     final AddParkingLotAdapter adapter = new AddParkingLotAdapter(mAppContext,0,listItems); 
     lv.setAdapter(adapter); 

Java代碼...適配器

public class AddParkingLotAdapter extends ArrayAdapter<String> { 
    private ArrayList<String> mStrings; 
    private LayoutInflater mInflater; 
    private AppContext mContext; 

    private static int NON_EMPTY_ROW = 1;                           
    private static int EMPTY_ROW  = 0; 

    public AddParkingLotAdapter(Context context, int resId, List<String> strings) { 
     super(context, resId,strings); 
     mStrings  = (ArrayList<String>) strings; 
     mContext  = (AppContext) context; 
     mInflater  = LayoutInflater.from(context); 
    } 
    @Override 
    public int getViewTypeCount() { 
     return 2;        
    } 
    @Override 
    public int getCount() { 
     return mStrings.size();  
    } 
    @Override 
    public String getItem(int position) { 
     return mStrings.get(position); 
    } 
    @Override 
    public int getItemViewType(int position) { 
     if(position==7||position==9||position==11){ 
      return EMPTY_ROW; 
     }else{ 
      return NON_EMPTY_ROW; 
     } 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     TextView itemTextView = null; 

     //different inflations for different type rows.. 
     if(getItemViewType(position) == EMPTY_ROW){ 
      if (convertView == null) { 
       convertView   = mInflater.inflate(R.layout.review_empty_row, null); 
      } 
     }else if(getItemViewType(position) == NON_EMPTY_ROW){ 
      if (convertView == null) { 
       convertView  = mInflater.inflate(R.layout.add_parkinglist_item, null); 
      } 
      itemTextView  = (TextView) convertView.findViewById(R.id.textview_add_lot_list); 
      itemTextView.setText(mStrings.get(position)); 
      if (position==3||position==8||position==10||position==12){ 
       ImageView itemImageView  = (ImageView)convertView.findViewById(R.id.imageview_arrow_add_lot_list); 
       itemImageView.setVisibility(View.VISIBLE); 
       EditText editText    = (EditText)convertView.findViewById(R.id.et_add_lot_list); 
       editText.setVisibility(View.INVISIBLE); 
      } 
     } 
     return convertView; 
    } 
} 

回答

5

在此代碼:

if (position==3||position==8||position==10||position==12){ 
    ImageView itemImageView  = (ImageView)convertView.findViewById(R.id.imageview_arrow_add_lot_list); 
    itemImageView.setVisibility(View.VISIBLE); 
    EditText editText    = (EditText)convertView.findViewById(R.id.et_add_lot_list); 
    editText.setVisibility(View.INVISIBLE); 
} 

你有沒有別的條款。這意味着如果position爲0,1,2,4,5或6,則不會明確設置視圖的可見性,因此可見性將是視圖回收時設置的任何內容。如果convertView非空,則始終需要重置其可見性可能會在之前進行修改的任何項目的可見性。

+0

那麼,這工作完美,感謝您的寶貴時間。 –