我在列表視圖中有多個編輯文本。編輯文本的數量不固定。列表視圖滾動時,編輯文本會丟失其內容或其他一些焦點對齊的編輯文本顯示其他一些編輯文本的值。我嘗試過堆棧溢出提供的解決方案,但沒有任何幫助。編輯文本在滾動列表視圖中丟失內容
我已經聲明瞭一個哈希映射,我在其中存儲位置和值,然後在哈希映射的編輯文本中設置文本,但某處哈希映射覆蓋之前存儲的位置的值。
如果需要密碼,請讓我知道。我會用我的代碼更新我的問題。
更新我的問題與我的代碼,我有tried-
public class JunkTabAdapter extends ArrayAdapter<JunkTabBean> {
private Activity mContext;
/* android.graphics.Typeface face; */
private int listItemForFile;
private static ArrayList<JunkTabBean> itemList = new ArrayList<JunkTabBean>();
private ListView download_row;
ImageLoader imageloader;
long fileLength;
String getImage, saveinternalImagePath;
Bitmap getBitmapImage;
HomeLoader hl;
NewImageLoader img;
String fromWhere;
String value="";
String qty="";
List<Integer> totAmtList = new ArrayList<Integer>();
JunkTab junkTab;
public int totAmt=0;
ViewHolder holder;
Map<Integer,String> map = new HashMap<Integer,String>();
int count=0;
public JunkTabAdapter(Activity context, int listItemForFile,
ArrayList<JunkTabBean> itemList,String fromWhere,JunkTab junkTab) {
super(context, listItemForFile, itemList);
this.mContext = context;
this.listItemForFile = listItemForFile;
this.itemList = itemList;
this.fromWhere=fromWhere;
this.junkTab=junkTab;
img=new NewImageLoader(context);
}
public int getCount() {
return itemList.size();
}
public JunkTabBean getItem(JunkTabBean position) {
return position;
}
public long getItemId(int position) {
return position;
}
public class ViewHolder {
public ImageView imgItem;
public ImageView imgInfo;
public ImageView imgDel;
public EditText edQty;
public TextView tvAmt;
public TextView tvTotAmt;
public View viewDivider;
int reference;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
holder = new ViewHolder();
LayoutInflater vi = (LayoutInflater)
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = vi.inflate(R.layout.junktabcomponent, null);
holder = new ViewHolder();
holder.imgItem = (ImageView)row.findViewById(R.id.imgItem);
holder.imgDel = (ImageView)row.findViewById(R.id.imgDelete);
holder.imgInfo = (ImageView)row.findViewById(R.id.imgInfo);
holder. edQty = (EditText)row.findViewById(R.id.edQty);
holder.tvAmt = (TextView)row.findViewById(R.id.tvAmt);
holder.tvTotAmt = (TextView)row.findViewById(R.id.tvTotalAmt);
holder.viewDivider = (View)row.findViewById(R.id.view1);
row.setTag(holder);
// holder.edQty.setTag(itemList.get(position).getId());
} else {
holder = (ViewHolder) row.getTag();
}
/* LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Service.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.junktabcomponent,null, false);
holder = new ViewHolder();
holder.imgItem = (ImageView)row.findViewById(R.id.imgItem);
holder.imgDel = (ImageView)row.findViewById(R.id.imgDelete);
holder.imgInfo = (ImageView)row.findViewById(R.id.imgInfo);
holder. edQty = (EditText)row.findViewById(R.id.edQty);
holder.tvAmt = (TextView)row.findViewById(R.id.tvAmt);
holder.tvTotAmt = (TextView)row.findViewById(R.id.tvTotalAmt);
holder.viewDivider = (View)row.findViewById(R.id.view1); */
// holder.edQty.setText(qty);
holder.edQty.setInputType(InputType.TYPE_CLASS_NUMBER);
final JunkTabBean item = (JunkTabBean) itemList.get(position);
img.DisplayImage(item.getImage(), holder.imgItem);
holder.edQty.setHint(item.getUnits());
// final int pos=(Integer) holder.edQty.getTag();
if(map.containsKey(holder.reference))
{
holder.edQty.setText(map.get(holder.reference).toString());
}
holder.edQty.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
/*value=value+s;
Log.e("value",value);*/
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
//map.put(pos,s.toString());
map.put(holder.reference,s.toString());
Log.e("map",""+map);
//holder.tvAmt.setText(""+(Integer.parseInt(item.getPrize()) * Integer.parseInt(map.get(holder.reference))));
//holder.tvAmt.setText(""+(Integer.parseInt(item.getPrize()) * Integer.parseInt(s.toString())));
/*totAmt=totAmt+(Integer.parseInt(item.getPrize()) * Integer.parseInt(s.toString()));
junkTab.setTotAmt(""+totAmt);*/
//qty=s.toString();
}
});
holder.reference=position;
// holder.edQty.setText(map.get(position));
// if(!map.get(position).contains(""))
/* if(!holder.edQty.getText().toString().equalsIgnoreCase(""))
holder.tvAmt.setText(""+(Integer.parseInt(item.getPrize())* Integer.parseInt(holder.edQty.getText().toString())));*/
return row;
}
}
ListView的項目被重新上滾動。你需要保存值來填充editText onScrolling。否則上述問題將一直存在。 – Tauqir
@ tauqir-我怎麼能達到相同的? Plz幫我編號爲 –