0

このチュートリアル を使用して、独自のアダプターをセットアップし、listViewにカスタム行を入力する方法を学びました。

ここで、アダプターを使用して各行で異なる画像(image1、image2など)を取得しようとしています。画像のフェッチを実装する必要があるヒントを誰かに教えてもらえますか?

main.javaからのスニペット:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_menu);
    m_orders = new ArrayList<Order>();
    int r = 0;
    this.m_adapter = new OrderAdapter(this, R.layout.row, m_orders);
    setListAdapter(this.m_adapter);
    viewOrders = new Runnable(){
        @Override
        public void run() {
            getOrders();
        }
    };
    Thread thread =  new Thread(null, viewOrders, "MagentoBackground");
    thread.start();     
    private Runnable returnRes = new Runnable() {

    @Override
    public void run() {
        if(m_orders != null && m_orders.size() > 0){
            m_adapter.notifyDataSetChanged();
            for(int i=0;i<m_orders.size();i++)
            m_adapter.add(m_orders.get(i));
        }
        m_ProgressDialog.dismiss();
        m_adapter.notifyDataSetChanged();
    }
};
private void getOrders(){
      try{
          m_orders = new ArrayList<Order>();
          Order o1 = new Order();
          o1.setOrderName("SF services");
          Order o2 = new Order();
          o2.setOrderName("SF Advertisement");
          m_orders.add(o1);
          m_orders.add(o2);
          Thread.sleep(2000);
          Log.i("ARRAY", ""+ m_orders.size());
        } catch (Exception e) { 
          Log.e("BACKGROUND_PROC", e.getMessage());
        }
        runOnUiThread(returnRes);
    }


private class OrderAdapter extends ArrayAdapter<Order> {

    private ArrayList<Order> items;

    public OrderAdapter(Context context, int textViewResourceId, ArrayList<Order> items) {
            super(context, textViewResourceId, items);
            this.items = items;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v == null) {
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.row, null);
            }
            Order o = items.get(position);
            if (o != null) {
                    TextView tt = (TextView) v.findViewById(R.id.toptext);
                    if (tt != null) {
                          tt.setText("Name: "+o.getOrderName());                            }
            }
            return v;
    }

およびrow.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
    android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_marginRight="6dip" />  
<LinearLayout
    android:orientation="vertical"
    android:layout_width="0dip"
    android:layout_weight="1"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/toptext"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:gravity="center_vertical"
    />
</LinearLayout>

事前にt​​hx。答えを見つけるのはそれほど難しいことではないと思います。しかし、新人のimで、少し迷子になりました:(

4

1 に答える 1

0

ネットワーク経由での画像の読み込みについて質問されていると思います。

Get them in 

     @Override
        public View getView(int position, View convertView, ViewGroup parent) {
           ...
        }

遅延読み込みの詳細については、画像の遅延読み込みを使用してください...グーグルで検索してください...

于 2013-02-20T12:20:13.233 に答える