2016-07-07 23 views
1

Android Studioで、テキストとそのテキストに対応する画像を持つlistViewを作成する必要があります。私は自分のカスタムアダプターを作る必要があることを知っていますが、各行のテキストビュー以外の方法でそれを作る方法はわかりません。アダプタは、テキストの文字列配列と、ピクチャに対応するURLの別の文字列配列を取ります。これを行うには、どうすればこのアダプタを作成できますか?私はピカソを使いたいと思うのが好きですが、他の提案もあります。ピカソを使用して文字列と画像の文字列を使用してListViewを作成

class MyAdapter extends ArrayAdapter <String> { 
Context context; 
String[] descriptionArray; 
String[] url; 


MyAdapter (Context c, String[] importerArray,String[] url) { 
    super(c, R.layout.content_orders,R.id.textView2, importerArray); 
    this.context =c; 
    this.descriptionArray = importerArray; 
    this.url = url; 
} 


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View row = inflater.inflate(R.layout.content_orders, list, false); 
    ImageView myImage = (ImageView) row.findViewById(R.id.imageView2); 
    TextView description = (TextView) row.findViewById(R.id.textView2); 
    description.setText(descriptionArray[position]); 
    Picasso.with(OrdersActivity.this).load(url[position]).into(myImage); 
    return convertView; 
} 
+0

あなたがこれまでにしようとしているものをご提示ください。ありがとうございました。 –

+0

@GennadiiSaprykin私は謝罪します。私は今それを更新しました。 – Kekis2014

答えて

1

使用BaseAdapterと

public class MyAdapter extends BaseAdapter { 
private Context mContext; 
private List<Bean> mList; 

public MyAdapter(Context context,List<Bean> list){ 
    mContext=context; 
    mList=list; 
} 

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

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

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

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    //use converview recycle 
    if(convertView==null){ 
     holder=new ViewHolder(); 
     convertView = LayoutInflater.from(mContext).inflate(R.layout.layout_demo, parent, false); 
     holder.textView= (TextView) convertView.findViewById(R.id.textview); 
     holder.imageView= (ImageView) convertView.findViewById(R.id.imageview); 
     convertView.setTag(holder); 
    }else{ 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    //set text and url 
    holder.textView.setText(mList.get(position).getText()); 
    Picasso.with(mContext).load(mList.get(position).getUrl()).into(holder.imageView); 

    return convertView; 
} 

class ViewHolder{ 
    TextView textView; 
    ImageView imageView; 

} 
} 

追加クラス豆

public class Bean { 
String text; 
String url; 

public String getText() { 
    return text; 
} 

public void setText(String text) { 
    this.text = text; 
} 

public String getUrl() { 
    return url; 
} 

public void setUrl(String url) { 
    this.url = url; 
} 
} 

MainActivity:

ArrayList<Bean> list=new ArrayList<>(); 
Bean bean1=new Bean; 
bean1.setText("YOUR TEXT"); 
bean1.setUrl("IMAGE URL"); 
//and bean2……3……4…… 
list.add(bean1); 
//add(bean2)………… 
MyAdapter adapter =new MyAdapter(this,list); 
listview.setAdapter(adapter); 
+0

それぞれの配列のテキストとイメージの両方をBeanリストに追加するにはどうしたらいいですか?私はこの全過程にちょっとしたことが残念です。 – Kekis2014

+0

本質的に、私は私の主なアクティビティクラスで変数リストを作成する必要があると仮定します。 myList = new ArrayList <>();テキストとURL文字列配列の両方の情報をmyListに取り込むためにメインアクティビティクラスに書き込むのは何ですか? – Kekis2014

+0

okコードを更新しました – Cgx

関連する問題