仿钉钉的物品领用 在删除后,getview中数据没有绑定,导致数据错乱。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (bundleStr.equals("发起领用")) {
final PickAdapter.ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_pick, parent, false);
holder = new PickAdapter.ViewHolder();
holder.pick_name = (TitleItem) convertView.findViewById(R.id.pick_input);
holder.pick_item = (StartItem) convertView.findViewById(R.id.pick_item);
holder.pick_number = (TextView) convertView.findViewById(R.id.pick_number);
holder.delete = (TextView) convertView.findViewById(R.id.delete);
convertView.setTag(holder);
} else {
holder = (PickAdapter.ViewHolder) convertView.getTag();
}
final HashMap map = dataList.get(position);
if (holder.pick_name.getTag() instanceof TextWatcher || holder.pick_name.getTag() instanceof TextWatcher) {
holder.pick_name.removeTextChangedListener((TextWatcher) (holder.pick_name.getTag()));
holder.pick_item.removeTextChangedListener((TextWatcher) (holder.pick_item.getTag()));
}
String s = holder.pick_name.getRightString();
if (map.get("name").equals("")) {
holder.pick_name.setIssueTi("申领物品:", "");
s = holder.pick_name.getRightString();
} else {
holder.pick_name.setIssueTi("申领物品:", map.get("name").toString());
}
if (map.get("number").equals(Config.SELECT)) {
holder.pick_item.setStartItem("领用数量:", Config.SELECT);
} else {
holder.pick_item.setIssueSi("领用数量:", map.get("number").toString());
}
s = holder.pick_name.getRightString();
TextWatcher name = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
holder.pick_name.getRightString();
if (holder.pick_name.getRightString().equals("")) {
dataList.get(position).put("name", "");
} else
dataList.get(position).put("name", holder.pick_name.getRightString());
}
};
TextWatcher number = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
holder.pick_item.getRightString();
dataList.get(position).put("number", holder.pick_item.getRightString());
}
};
if (dataList.size() == 1) {
holder.delete.setVisibility(View.GONE);
} else holder.delete.setVisibility(View.VISIBLE);
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new AlertDialog.Builder(context)
.setTitle("你确定要删除" + holder.pick_number.getText().toString() + "吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dataList.remove(position);
adapter.notifyDataSetChanged();
setListViewHeightBasedOnChildren(pickList);
}
})
.setNegativeButton("取消", null)
.show().setCanceledOnTouchOutside(false);
}
});
holder.pick_item.setRightOnClick(new View.OnClickListener() {
@Override
public void onClick(View view) {
ArrayList<String> list = new ArrayList<>();
list.clear();
for (int i = 1; i <= 10; i++) {
list.add("" + i);
}
list.add("大于10");
CustomPicker.CustomOptionPicker(context, list, holder.pick_item, "数量选择");
}
});
holder.pick_number.setText("物品明细(" + (position + 1) + ")");
holder.pick_name.addTextChangedListener(name);
holder.pick_item.addTextChangedListener(number);
holder.pick_name.setTag(name);
holder.pick_item.setTag(number);
}
if (bundleStr.equals("物品领用审批")||bundleStr.equals("领用进度查看")){
final PickAdapter.ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_pick, parent, false);
holder = new PickAdapter.ViewHolder();
holder.pick_name = (TitleItem) convertView.findViewById(R.id.pick_input);
holder.pick_item = (StartItem) convertView.findViewById(R.id.pick_item);
holder.pick_number = (TextView) convertView.findViewById(R.id.pick_number);
holder.delete = (TextView) convertView.findViewById(R.id.delete);
convertView.setTag(holder);
} else {
holder = (PickAdapter.ViewHolder) convertView.getTag();
}
holder.pick_item.setIssueSi("领用数量:",dataList.get(position).get("number").toString());
holder.pick_name.setIssueTi("申领物品:", dataList.get(position).get("name").toString());
holder.pick_item.setEditNoBorder();
holder.pick_name.setEditNoBorder();
holder.delete.setVisibility(View.GONE);
holder.pick_number.setText("物品明细(" + (position + 1) + ")");
}
return convertView;
}
7.0以后的文件打开需要fileProvider
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本是否在7.0以上 uri = FileProvider.getUriForFile(MyApplication.getContext(), MyApplication.getContext().getPackageName() + ".fileprovider", file); //添加这一句表示对目标应用临时授权该Uri所代表的文件 } else { uri = Uri.fromFile(file); }
打开文件时需要根据版本进行判断,根据uri获取path的多种判断String imagePath = null; Uri uri = data.getData(); if(DocumentsContract.isDocumentUri(getActivity(),uri)){ String docId= DocumentsContract.getDocumentId(uri); if ("com.android.providers.media.documents".equals(uri.getAuthority())){ String id = docId.split(":")[1]; String selection = MediaStore.Images.Media._ID+"="+id; imagePath=getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,selection); } else if ("com.android.providers.downloads.documents".equals(uri.getAuthority())){ Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),Long.valueOf(docId)); imagePath=getImagePath(contentUri,null); } } else if ("content".equalsIgnoreCase(uri.getScheme())){ //如果不是doc的uri,使用普通方式处理 imagePath = getImagePath(uri,null); } // displayImage(imagePath); else if ("file".equalsIgnoreCase(uri.getScheme())) { imagePath=uri.getPath(); }