2016-07-07 33 views
1

我需要在Android Studio中創建一個具有文本和與該文本相對應的圖像的listView。我知道我必須製作自己的自定義適配器,但是我不知道如何使它不僅僅是每行中的文本視圖。適配器將接收文本的字符串數組,以及與圖片對應的另一個url的字符串數組。我怎樣才能創建這個適配器來做到這一點。我最好喜歡使用畢加索,但如果你有任何其他建議也可以。使用一串文字和一串圖像使用picasso創建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; 

} 
} 

附加Bean類

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 <>();什麼是我會在我的主要活動類寫入填充myList與來自文本和url字符串數組的信息? – Kekis2014

+0

好的,我已經更新了代碼 – Cgx

相關問題