gpt4 book ai didi

android - View Holder 稳定性问题

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:10 27 4
gpt4 key购买 nike

我正在将数据上传到服务器,如果数据成功上传到服务器,那么我会显示“已保存”,就像您可以看到图像“已上传”一样。

但问题是,我已经为第一个项目行存储了数据,而在不同的行项目中获取“已保存”文本

holder.textDataStatus.setText(ImageList.get(position).getData());

protected void onPostExecute(String file_url) {
// dismiss the dialog once product deleted
pDialog.dismiss();

try {

// Prepare Save Data
if(strStatusId.equals("0"))
{
Toast.makeText(UploadImagesActivity.this, "Unable to upload", Toast.LENGTH_SHORT).show();
}
else if (strStatusId.equals("1"))
{
Toast.makeText(UploadImagesActivity.this, "Data Uploaded Successfully", Toast.LENGTH_SHORT).show();
ImageList.get(position).setData("Saved");
Log.d("strData:", fileName); // getting correct tapped item
mAdapter.notifyDataSetChanged();
}
else
{
Toast.makeText(UploadImagesActivity.this, "Unable to upload", Toast.LENGTH_SHORT).show();
}

} catch (Exception e) {
// TODO: handle exception
}


if (file_url != null){
Toast.makeText(UploadImagesActivity.this, file_url, Toast.LENGTH_LONG).show();
}

最佳答案

问题是您的适配器不知道将哪一行的数据上传到服务器。你需要告诉你的适配器。至于“如何将其告知适配器?”这个问题,您已经有了一个列表 ImageList。我们只需要编辑它。

现在,向您的 MyData 类添加另一个 bool,例如:boolean uploaded = false; 并为其创建 getter setter。

将以下行添加到您的 getView():

if(ImageList.get(position).isUploaded()){
holder.btnUpload.setText("Save");
}else{
holder.btnUpload.setText("Upload");
}

现在,我们需要在上传完成后将此值设置为 true。我们应该只在 UploadData 类中这样做。为此,我们需要将位置发送到 UploadData 类。我们可以通过构造函数来做到这一点,如下所示:

class UploadData extends AsyncTask<String, String, String> {
private ProgressDialog pDialog;

int position;

//constructor to pass position of row, on which button was clicked to class
public UploadData(int position){
this.position=position;
}

/**
* Before starting background thread Show Progress Dialog
* */

.
.
.
.

protected void onPostExecute(String file_url) {
// dismiss the dialog once product deleted
pDialog.dismiss();

//after upload is done, set value to true
ImageList.get(position).setUploaded(true);
//now we need to notify our adapter so that it can reflect changes
mAdapter.notifyDataSetChanged();
.
.

现在,根据您当前的代码,我认为通过构造函数将 position 的值传递给 UploadData 对您来说真的很难。因此,您可以尝试在类的全局变量中设置一个值。

编辑 1:

将位置传递给 holder.btnData.SetOnClickListener 中的全局变量,如下所示:

holder.btnData.setOnClickListener(new OnClickListener() {

@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
//pass position into activity's global variable
pos = position/*position from adapter*/;
strPath = ImageList.get(position).getImages().toString();
fileName = strPath.substring(strPath.lastIndexOf('/') + 1, strPath.length());

showDialog(DIALOG_DATA);

}
});

如果您需要任何解释,请发表评论。

关于android - View Holder 稳定性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29385124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com