2017-04-26 11 views
0

Android開発の初心者です。カスタムリストビューのレイアウトを作ろうとしています。 ImageViewがレイアウトされている場合、イメージパスをどのように与えるかを知りたい。私はカスタムリストビューのアイテムのレイアウト

ListView lstItems = (ListView) findViewById(R.id.lstItems); 

String[] from = new String[]{"itemname", "productimage"}; 
int[] to = new int[]{R.id.itemname, R.id.productimage}; 

List<HashMap<String, Object>> fillMaps = new ArrayList<HashMap<String, Object>>(); 

for (Item item : objects) { 

    HashMap<String, Object> map = new HashMap<String, Object>(); 
    map.put("itemname", item.getName()); 
    map.put("productimage", item.getImages()); 

    fillMaps.add(map); 

} 

SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.shop_listitem_view, from, to); 
lstItems.setAdapter(adapter); 

レイアウトファイルこのリストビューを移入しています

活動ファイル:この場合、

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/itemname" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="19dp" 
     android:layout_marginTop="22dp" 
     android:text="TextView" 
     android:textSize="14sp" 
     android:layout_alignParentTop="true" 
     android:layout_toEndOf="@+id/productimage" /> 

    <ImageView 
     android:id="@+id/productimage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="21dp" 
     app:srcCompat="@drawable/common_full_open_on_phone" 
     android:layout_alignTop="@+id/itemname" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 
+0

だから、エラーは何ですか? –

+0

ImageViewの画像パス/ URLを入力するにはどうすればよいですか? –

+0

イメージは一部のサーバーまたはプロジェクトにありますか?いくつかのサーバーで –

答えて

0

を、SimpleAdapterはあなたのために動作しません。あなたのビジネスロジックを表現するクラスを作成する必要が最初の場所で:

public class Product { 

public String productName; 

public String productImage; 

} 

第二に、あなたはあなたのbuild.gradle(モジュールアプリ)ファイルにGlideライブラリを追加する必要があります。あなたの依存関係のブロックでは、この行を追加します。それがなければならない、のは、あなたのAdapterクラスを作成してみましょう、今

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

    <ImageView 
     android:id="@+id/your_image_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/your_text_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

:その後

dependencies { 
    compile 'com.github.bumptech.glide:glide:3.7.0' 
    } 

を、あなたのAdapterによって膨張されるレイアウトファイルを作成する必要があります

public class YourAdapter extends BaseAdapter{ 

    private List<Object> products; 
    private Context context; 


    public YourAdapter(Context context, List<Product> products){ 
     this.context = context; 
     this.products = products; 

    } 


    @Override 
    public int getCount() { 
     return products.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return products.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = li.inflate(R.layout.your_list_layout, null);//set layout for displaying items 
     ImageView image = (ImageView) view.findViewById(R.id.your_image_view);//get id for image view 
     Glide.with(context).load(products.get(position).productImage).into(image); //set the image in your image view 
     TextView text = (TextView) view.findViewById(R.id.your_text_view); 
     text.setText(products.get(position).productName); 
     return view; 
    } 
} 

そして最後に、あなたの活動にあなたがそれを使用することができます:

クラスを拡張
//Create a product: 
List<Product> p = new ArrayList<>(); 
Product prod = new Product(); 
prod.productName = "Name of your product"; 
prod.productImage = "http://your_image_url"; 
prod.add(prod); 

YourAdapter adapter = new YourAdapter(this, p); 

//and finally, set it into your listview: 

listview.setAdapter(adater); 
関連する問題