我有一個列表視圖,它有一個自定義適配器,其中每行左側有一個textview,右側有一個edittext,用戶可以使用它來修改條目值。動態地更改listview適配器中的數據
默認情況下,放置在每個視圖的EditText視圖中的值是從傳遞到適配器的字符串數組獲得的。
我想知道我可以如何讓用戶編輯這些值並將結果保存回相同的字符串數組。
我已經嘗試添加文本更改偵聽器,因此當用戶編輯值時,新字符串被放置在原始字符串數組中的適當位置。問題在於,當用戶滾動文本時,更改偵聽器被激活,並且數組中的值被空字符串覆蓋。
下面是一些代碼:
public EditTagsListViewAdapter(Context context, String[] objectKeys, String[] objectValues) {
super();
this.context = context;
this.objectKeys = objectKeys;
this.objectValues = objectValues;
}
@Override
public int getCount() {
return objectKeys.length;
}
@Override
public String[] getItem(int position) {
String[] item = new String[2];
item[0] = objectKeys[position];
item[1] = objectValues[position];
return item;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
LayoutInflater mInflater = (LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.edit_osm_tag_row, null);
holder = new ViewHolder();
holder.key = (TextView) convertView.findViewById(R.id.tagKey);
holder.value = (EditText) convertView.findViewById(R.id.tagValue);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
String[] rowItem = (String[]) getItem(position);
holder.key.setText(rowItem[0]);
if(rowItem[1].equals("null")) {
holder.value.setText("");
} else {
holder.value.setText(rowItem[1]);
}
holder.value.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
objectValues[position] = s.toString();
Log.i(TAG, "Added changes to adapter");
}
});
return convertView;
}
static class ViewHolder {
protected TextView key;
protected EditText value;
}
我設置一些的EditText值空白if(rowItem[1].equals("null")) {
後,由於一些變量objectValues值將被設置爲字符串「null」,但我希望它們出現空白。
希望這是有道理的。有誰知道我能做到這一點?
感謝