图库中的文本字段没有变化 android

Text field doesn't change in gallery android

我有加载少量图像缩略图的 gridview。当我点击一些图片时,会在新 activity 完整图片中打开。现在我试图添加一些关于图像的描述。当加载 activity 时,也会加载此图像的信息。到目前为止一切顺利..

当我单击“下一步”按钮加载下一张图片(完整图片,无需返回带有缩略图的 gridview)时,问题就出现了,下一张图片的描述不会更新和更改。对每张图片都是相同的描述。 这里我下载thumbfull_imagedescription

String url = "http://myhost/get.php?id=" + my_id;

        JSONArray data;
        try {
            resultServer = getJSONUrl(url);
            data = new JSONArray(resultServer);

            MyArrList = new ArrayList<HashMap<String, Object>>();
            HashMap<String, Object> map;

            for(int i = 0; i < data.length(); i++){
                JSONObject c = data.getJSONObject(i);
                map = new HashMap<String, Object>();
                map.put("id", (String)c.getString("id"));
                map.put("description", (String)c.getString("description"));

                // Thumbnail Get ImageBitmap To Bitmap
                map.put("ImagePathThum", (String)c.getString("image"));
                map.put("ImageThumBitmap", (Bitmap)loadBitmap(c.getString("image")));

                // Full (for View Full)
                map.put("ImagePathFull", (String)c.getString("image_big"));

                MyArrList.add(map);
            }

然后这是显示拇指的 gridView()

    public void ShowAllContent()
{
    // gridView1
    final GridView gridV = (GridView)findViewById(R.id.gridView1); 
    gridV.setAdapter(new ImageAdapter(act1.this,MyArrList));

    // OnClick
    gridV.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
            int position, long id) {
            String Position = String.valueOf(position);

            Intent newActivity = new Intent(act1.this,act2.class);
            newActivity.putExtra("Position", Position);
            newActivity.putExtra("resultServer", resultServer);
            newActivity.putExtra("description", MyArrList.get(position).get("description").toString());
            startActivity(newActivity);
            finish();
        }
    });
}

然后在第二幕

TextView txtView;
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.information);        

    txtView = (TextView) findViewById(R.id.text);

    Intent intent= getIntent();
    curPosition = Integer.parseInt(intent.getStringExtra("Position")); 
    resultServer = String.valueOf(intent.getStringExtra("resultServer")); 
    textDescription = getIntent().getStringExtra("description");

    ((TextView)findViewById(R.id.text)).setText(textDescription+"");

    try {
        MyArrList = ConvertJSONtoArrayList(resultServer);

    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Log.d("ArrayList Size",String.valueOf(MyArrList.size()));

    // Show Image Full
    new DownloadFullPhotoFileAsync().execute();

    // Button Back
    back = (Button) findViewById(R.id.btnBack);
    back.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            curPosition = curPosition - 1;
            new DownloadFullPhotoFileAsync().execute();
        }
    });

    // Button Next
    next = (Button) findViewById(R.id.btnNext);
    next.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            curPosition = curPosition + 1;
            new DownloadFullPhotoFileAsync().execute();
        }
    });
   }
// Show Image Full
public void ShowImageFull(String imageName, Bitmap imgFull)
{

    // Prepare Button (Back)
    if(curPosition <= 0)
    {
        back.setEnabled(false);
    }
    else
    {
        back.setEnabled(true);
    }

    // Prepare Button (Next)
    Log.d("curPosition",String.valueOf(curPosition));
    Log.d("MyArrList.size",String.valueOf(MyArrList.size()));
    if(curPosition >= MyArrList.size() - 1)
    {
        next.setEnabled(false);
    }
    else
    {
        next.setEnabled(true);
    }

     ImageView image = (ImageView) findViewById(R.id.fullimage);    
     try
     {
        image.setImageBitmap(imgFull);
     } catch (Exception e) {
         // When Error
        image.setImageResource(android.R.drawable.ic_menu_report_image);
     }
     // Show Toast
    Toast.makeText(act2.this,imageName,Toast.LENGTH_LONG).show();           
}

public ArrayList<HashMap<String, Object>> ConvertJSONtoArrayList(String json) throws JSONException
{

    JSONArray data = new JSONArray(resultServer);

    ArrayList<HashMap<String, Object>> arr = new ArrayList<HashMap<String, Object>>();
    HashMap<String, Object> map;

    for(int i = 0; i < data.length(); i++){
        JSONObject c = data.getJSONObject(i);
        map = new HashMap<String, Object>();
        map.put("ImageName", (String)c.getString("name"));
        map.put("ImagePathThum", (String)c.getString("image"));
        map.put("ImagePathFull", (String)c.getString("image_big"));
        map.put("description", (String)c.getString("description"));

        arr.add(map);
    }       
    return arr;     
}           
}
public class DownloadFullPhotoFileAsync extends AsyncTask<String, Void, Void> {

    String strImageName = "";
    String ImageFullPhoto = "";     
    Bitmap ImageFullBitmap = null;

    @Override
    protected Void doInBackground(String... params) {
        strImageName = MyArrList.get(curPosition).get("ImageName").toString();
        ImageFullPhoto = MyArrList.get(curPosition).get("ImagePathFull").toString();
        ImageFullBitmap = (Bitmap)loadBitmap(ImageFullPhoto);
        return null;
    }
}

很抱歉源代码很长,但我不知道到底需要哪一部分。

我尝试添加 DownloadFullPhotoFileAsync

 textDescription = MyArrList.get(curPosition).get("description").toString();

所以什么时候加载 new DownloadFullPhotoFileAsync().execute(); 旁边的按钮也加载了这个,但我猜这是错误的,因为它不起作用。

您不能在 Async Task 的 DoInBackground() 函数中设置文本,但您可以在 PostExecute() 上对描述进行 setText,这是 AsyncTask 的一个函数。

所以我认为您应该尝试在 Asynctask 的 PostExecute 函数中设置您的描述。

看看:http://developer.android.com/reference/android/os/AsyncTask.html

希望对您有所帮助, 干杯!