异步活动后显示带有文本的图片

时间:2014-05-26 10:09:52

标签: android image text android-asynctask

我是android开发的新手,我正在尝试显示一些小图像(小国家标志),每个图像旁边都有一些描述文字。 我正在做的是创建一个异步作业,连接到Internet检索我需要的信息并填充类中的一些变量,最后它返回此类的对象。 函数onPostExecute

protected void onPostExecute(String result) {
        System.out.println(xmlData.getCurrency("USD"));
        try {
            activReg.getResult(xmlData);
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("MESSAGE GET RESULT"+e.getMessage());
        }
   }

MainActivity中的函数getResult类似于

public void getResult(Currency xmlObj){
   LinearLayout right = new LinearLayout(this);
   Resources resource = getResources();
   ImageView imgUsd = (ImageView) this.findViewById(R.id.usd);
   final Drawable drawable = imgUsd.getDrawable();
   TextView res = new TextView(this);
   imgUsd.setImageDrawable(drawable);
   res.setText("EUR=>USD: "+Double.toString(xmlObj.getCurrency("USD")));
   //res.setText("EUR=>GBP: "+Double.toString(xmlObj.getCurrency("GBP")));
   setContentView(res);

}

现在,你可以看到我搞砸了一切,尝试了许多无论如何都没有用的东西。所以我想要实现的是拥有一个xmlObj.getCurrency("USD")xmlObj.getCurrency("GBP")等列表,旁边有一个小标记图像。当然,如果我使用setText不止一个,最后一个会覆盖前一个,这就把我带到了两个问题:

  1. 如何在布局中添加更多文字?
  2. 如何在主xml布局中添加定义(或不​​定义)的图像?
  3. 为了您的信息,布局为LinearLayout,我也试图以这种方式包含图片:

    <ImageView 
        android:id="@+id/usd"
        android:layout_width="59dp" 
        android:layout_height="40dp"
        android:layout_gravity="fill_vertical"
        android:src="@drawable/usd" />
    
    xml中的

2 个答案:

答案 0 :(得分:0)

如果您有多个带描述的图像,则可以使用列表视图。 您可以关注ListView tutorial

答案 1 :(得分:0)

您的代码是: -

  protected void onPostExecute(String result) {
        System.out.println(xmlData.getCurrency("USD"));
        try {
            activReg.getResult(xmlData);
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("MESSAGE GET RESULT"+e.getMessage());
        }
    }

您是一个一个地加载xmlObj还是一起加载所有xmlObj?

您可以使用listview创建一个xml。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:divider="@android:color/transparent"
        android:dividerHeight="10dp"
        android:scrollbars="none" >
    </ListView>
</RelativeLayout>

稍后在你的getResult方法中写下

  View view = LayoutInflater.from(context).inflate(R.layout.list_view, parent, false);
    setContentView(view);
    ArrayList<YourModel> arrayList = new ArrayList<YourModel>();
    for(int i = 0 ; i < xmlObj[].length; i++){
      YourModel model = new YourModel;
      model.setUsd(Double.toString(xmlObj.getCurrency("USD"));
      model.setImageUrl(xmlObj.getString("Url"));
      arrayList.add(model);
    }
    CustomArrayAdapter arrayAdapter = new CustomArrayAdapter(context,R.id.list_item,arrayList);
    ListView view = (ListView) view.findViewById(R.id.listView);
    view.setadapter(arrayAdapter);

YourModel将是一个单独的java类,它将具有图像URL和文本描述 这将有吸气剂和制定者。

R.id.list_item : - 您需要创建另一个xml来创建列表行,这将使imageView和textview水平对齐。

customArrayAdapter将是自定义适配器,您可以在其中找到教程。

如果仍然怀疑你可以随时问......:)