2016-03-08 153 views
2

我在一個activity中有一個listview,我已經爲此創建了自定義listview。在自定義列表中,我有一個imageview和兩個textview。在將值添加到列表中時,它只顯示最後一個元素。ListView只顯示最後一個元素

public class ContactUs extends Activity { 
ImageView imageView; 
TextView tvDetails,tv1; 
private static String details[] = {"details1","details2","details3","details4","details5","details6"}; 
private static String desc[] = {"Name","Call","Email", 
     "Skype","Head Office","Website"}; 

private static int icons[] = {R.drawable.user, R.drawable.smartphone, 
     R.drawable.e_mail_envelope, R.drawable.facebook_logo, R.drawable.map_localization, 
     R.drawable.grid_world}; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_contact_us); 
    imageView=(ImageView)findViewById(R.id.imageView); 
    tvDetails=(TextView)findViewById(R.id.tvDetails); 
    tv1=(TextView)findViewById(R.id.tv11); 
    //final ListView lv1 = (ListView) findViewById(R.id.lvContact); 


    ArrayList<addValuesContact> searchResults = GetSearchResults(); 

    final ListView lv1 = (ListView) findViewById(R.id.lvContact); 
    lv1.setAdapter(new MyCustomAdapterContact(this, searchResults)); 

    lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
      Object o = lv1.getItemAtPosition(position); 
      addValuesContact fullObject = (addValuesContact) o; 
      //Toast.makeText(getBaseContext(), "You have chosen: " + " " + fullObject.getDetails(), Toast.LENGTH_LONG).show(); 
     } 
    }); 

} 

private ArrayList<addValuesContact> GetSearchResults() { 
    ArrayList<addValuesContact> results = new ArrayList<>(); 
    addValuesContact sr1 = new addValuesContact(); 

    for (int i=0;i<6;i++) { 
     sr1.setImage(icons[i]); 
     sr1.setTv1(desc[i]); 
     sr1.setDetails(details[i]); 
     results.add(sr1); 
    } 

    return results; 
}} 

我的自定義適配器類的細節在下面給出

public class MyCustomAdapterContact extends BaseAdapter { 
private static ArrayList<addValuesContact> searchArrayList; 
private LayoutInflater mInflater; 

    public MyCustomAdapterContact(Contextcontext,ArrayList<addValuesContact>results) { 
    searchArrayList = results; 
    mInflater = LayoutInflater.from(context); 
} 

public int getCount() { 
    return searchArrayList.size(); 
} 

public Object getItem(int position) { 
    return searchArrayList.get(position); 
} 

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

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.contact_list, null); 
     holder = new ViewHolder(); 
     holder.imageView(ImageView)convertView.findViewById(R.id.imageView); 
     holder.tvDetails (TextView)convertView.findViewById(R.id.tvDetails); 
     holder.tv1 = (TextView) convertView.findViewById(R.id.tv1); 


     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    addValuesContact bean = (addValuesContact)searchArrayList.get(position); 

    holder.imageView.setImageResource(bean.getImage()); 
    holder.tvDetails.setText(searchArrayList.get(position).getDetails()); 
    holder.tv1.setText(searchArrayList.get(position).getTv1()); 


    return convertView; 
} 

static class ViewHolder { 
    ImageView imageView; 
    TextView tvDetails; 
    TextView tv1; 

}} 

POJO類如下

public class addValuesContact { 
private String details = ""; 
private String tv1 = ""; 
int image; 
public int getImage() { 
return image; 
} 
public void setImage(int image) { 
    this.image = image; 
} 
public void setDetails(String details) { 
    this.details = details; 
} 

public String getTv1() { 
    return tv1; 
} 

public void setTv1(String tv1) { 
    this.tv1 = tv1; 
} 

public String getDetails() { 
    return details; 
}} 
+4

在您聯繫我們的活動嘗試移動addValuesContact SR1 =新addValuesContact();內部for循環。在GetSearchResults() – ajantha

+0

@ajantha:thnks它工作:) – Krishna

回答

3

更新如下方法給出:

private ArrayList<addValuesContact> GetSearchResults() { 
    ArrayList<addValuesContact> results = new ArrayList<>(); 

    for (int i=0;i<6;i++) { 
     addValuesContact sr1 = new addValuesContact(); 
     sr1.setImage(icons[i]); 
     sr1.setTv1(desc[i]); 
     sr1.setDetails(details[i]); 
     results.add(sr1); 
    } 

    return results; 
} 

原因:您需要每次創建模型類的新對象。

完成

0

創建具有陣列中所有可用的您需要創建模型類的,每次一個對象,你穿越到一個循環設置數據項的列表。因此,在設置變量之前,請在for循環中添加addValuesContact sr1 = new addValuesContact();

private ArrayList<addValuesContact> GetSearchResults() { 
ArrayList<addValuesContact> results = new ArrayList<>(); 

for (int i=0;i<6;i++) { 
    addValuesContact sr1 = new addValuesContact(); 
    sr1.setImage(icons[i]); 
    sr1.setTv1(desc[i]); 
    sr1.setDetails(details[i]); 
    results.add(sr1); 
} 

return results; 

}