//===============主要看这个地方===============
private Handler myHandler = new Handler() {
public void handleMessage(Message message) {
Button button = (Button) message.obj
int buttontag = Integer.parseInt(String.valueOf(( (Button)message.obj ).getTag()))
if (message.what == 1) {
Bundle bundle = message.getData()
final int position = bundle.getInt("position")
if (position == buttontag){
Toast.makeText(context, "下载成功", Toast.LENGTH_SHORT).show()
button.setText("打开附件")
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = AndroidFileUtil.openFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/陕西省疾控信息平台" + "/" + list.get(position))
context.startActivity(in)
}
})
}
}
if (message.what == 2) {
button.setText("下载失败")
Toast.makeText(context, "下载失败", Toast.LENGTH_SHORT).show()
}
}
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder vh = null
if (convertView == null) {
vh = new ViewHolder()
convertView = LayoutInflater.from(context).inflate(R.layout.download_lv_item, null)
vh.textView = (TextView) convertView.findViewById(R.id.sw_download_tv)
vh.button = (Button) convertView.findViewById(R.id.sw_load_button)
convertView.setTag(vh)
} else {
vh = (ViewHolder) convertView.getTag()
}
vh.textView.setText(list.get(position))
final ViewHolder finalVh1 = vh
vh.button.setTag(position)
vh.button.setOnClickListener(new View.OnClickListener() {
public void onResponse(Call call, Response response) throws IOException {
File file1 = Environment.getExternalStorageDirectory()
openFile = file1.getAbsolutePath() + "/陕西省疾控信息平台" + "/" + list.get(position)
InputStream is = null
byte[] buf = new byte[2048]
int len = 0
FileOutputStream fos = null
String SDPath = Environment.getExternalStorageDirectory().getAbsolutePath()
try {
is = response.body().byteStream()
long total = response.body().contentLength()
if (file1.exists() && file1.canWrite()) {
file2 = new File(file1.getAbsolutePath() + "/陕西省疾控信息平台" + "/" + list.get(position))
if (!file2.getParentFile().exists()) {
file2.getParentFile().mkdirs()
}
try {
file2.createNewFile()
} catch (IOException e) {
e.printStackTrace()
}
Log.i("gjw", "不存在,但是已经创建成功 ")
} else {
Log.i("gjw", "已经存在 " + file1.getName())
}
fos = new FileOutputStream(file2)
long sum = 0
while ((len = is.read(buf)) != -1) {
fos.write(buf, 0, len)
}
fos.flush()
//===============主要看这个地方===============
Message message = myHandler.obtainMessage()
message.what = 1
message.arg1 = position
message.obj = finalVh1.button
Bundle bundle = new Bundle()
bundle.putInt("position",position)
message.setData(bundle)
myHandler.sendMessage(message)
// Toast.makeText(DetailNotifiActivity.this,"文件下载成功",Toast.LENGTH_SHORT).show()
Log.d("h_bl", "文件下载成功")
} catch (Exception e) {
Message message = myHandler.obtainMessage()
message.what = 2
message.obj = position
myHandler.sendMessage(message)
Log.d("h_bl", "文件下载失败")
// Toast.makeText(DetailNotifiActivity.this,"文件下载失败",Toast.LENGTH_SHORT).show()
} finally {
try {
if (is != null)
is.close()
} catch (IOException e) {
}
try {
if (fos != null)
fos.close()
} catch (IOException e) {
}
}
}
})
}
}
})
return convertView
}