[問題] listview裡面的textview跑板

看板AndroidDev作者 (rockex6)時間7年前 (2017/05/02 18:24), 7年前編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/1
如題 我的listview會變成這樣 http://imgur.com/a/Mkn2g 從來沒遇到過這種問題.... 下面是我左邊listview的adapter class AreaSelectAdapter extends BaseAdapter { @Override public int getCount() { return TempData.areaData.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { LinearLayout baseLayout = null; if (convertView == null) { baseLayout = (LinearLayout) LinearLayout.inflate(mContext, R.layout.item_area, null); } else { baseLayout = (LinearLayout) convertView; } TextView area = (TextView) baseLayout.findViewById(R.id.list_item); if (TempData.areaData.size() != 0) { area.setText(TempData.areaData.get(position).getArea()); } //將選中的選項反白 if (position == mAreaPosition) { area.setTextColor(getResources().getColor(R.color.white)); } else { area.setTextColor(getResources().getColor(R.color.colorBFBFBF)); } } 先謝謝大家了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.39.226 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1493720671.A.92D.html givemepass: 先不說跑版 你的Holder呢? 我沒有寫holder耶 05/02 20:35

05/02 20:42, , 1F
先確定你的資料來源字串後面有沒有空白
05/02 20:42, 1F
抱歉,沒有說得很清楚定,資料確定沒有空白,因為出現這狀況之後, 只要滑動listview某些項就會跑成這樣,每次滑動跑版的項都不一樣 發現問題了,只要調用左邊Adapter的notifyDataSetChanged 就會變那樣... ※ 編輯: rockex6 (60.251.39.226), 05/03/2017 09:46:42 ※ 編輯: rockex6 (60.251.39.226), 05/03/2017 10:08:08

05/03 10:14, , 2F
所以你的getView最後是return哪個 view ?看起來是沒寫
05/03 10:14, 2F

05/03 10:22, , 3F
應該不是notifyDataSetChanged的問題,單純只是你沒跟
05/03 10:22, 3F

05/03 10:22, , 4F
他講你return了那個item layout,這樣不會build error?
05/03 10:22, 4F
這個是整個getView @Override public View getView(final int position, View convertView, ViewGroup parent) { LinearLayout baseLayout = null; if (convertView == null) { baseLayout = (LinearLayout) LinearLayout.inflate(mContext, R.layout.item_area, null); } else { baseLayout = (LinearLayout) convertView; } TextView area = (TextView) baseLayout.findViewById(R.id.list_item1); if (TempData.areaData.size() != 0) { area.setText(TempData.areaData.get(position).getArea()); } //將選中的選項反白 if (position == mAreaPosition) { area.setTextColor(getResources().getColor(R.color.white)); } else { area.setTextColor(getResources().getColor(R.color.colorBFBFBF)); } return baseLayout; } ※ 編輯: rockex6 (60.251.39.226), 05/03/2017 13:32:45 好..整個BUG釐清了,當我的listview點擊之後 最上第一項和最下第一項不可見的item位置跑板 因為我需要點擊item之後 把他的文字換顏色 所以叫了notifyDataSetChanged 但是這樣會跑板,把notifyDataSetChanged拔了之後就不會了 ※ 編輯: rockex6 (60.251.39.226), 05/03/2017 15:47:19

05/03 20:50, , 5F
沒用 Holder 這個 adapter 就浪費惹
05/03 20:50, 5F
文章代碼(AID): #1P25vVaj (AndroidDev)