2016-04-30 132 views
0

ORIGINAL POST:如何使用Map <String,Object>设置文字?

如何设置一个对象的TextView?我从Web服务数据库提取数据并将其设置为对象。然后我试图将对象中的数据设置为textview。

我需要什么帮助:

1)设置与地图字符串一个TextView,对象就web服务数据库

上一篇:Populating a ListView with Kumulos?

更新代码中:

对象:

static class Person{ 

    public long personID; 
    public String lastName; 
    public String middleName; 
    public String firstName; 
    public String dateOfBirth; 
    public String personAddress; 
    public int phoneNumber; 
    public int driversLicense; 
    public int socialSecurity; 
    public String personRace; 
    public String personSex; 
    public String personAge; 

    public static Person createFromGenericMap(Map<String, Object> object) { 

     Person p = new Person(); 

     p.personID = Long.valueOf(object.get("personID").toString()); 
     p.lastName = (String) object.get("lastName"); 
     p.middleName = (String) object.get("middleName"); 
     p.firstName = (String) object.get("firstName"); 
     p.dateOfBirth = (String) object.get("dob"); 
     p.personAddress = (String) object.get("address"); 
     p.phoneNumber = Integer.valueOf(object.get("phone").toString()); 
     p.driversLicense = Integer.valueOf(object.get("dl").toString()); 
     p.socialSecurity = Integer.valueOf(object.get("ss").toString()); 
     p.personRace = (String) object.get("race"); 
     p.personSex = (String) object.get("sex"); 
     p.personAge = (String) object.get("age"); 

     return p; 
    } 
} 

我的适配器:

static class PersonAdapter extends BaseAdapter { 

    private List<Person> people; 
    private static LayoutInflater inflater = null; 

    public PersonAdapter(Context context, List<Person> people){ 
     this.people = people; 
     inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 


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

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

    @Override 
    public long getItemId(int position) { 
     Person p = people.get(position); 
     return p.personID; 
    } 

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

     View view = convertView; 

     LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 

      view = inflater.inflate(R.layout.personlist_row, null); 

      TextView dl = (TextView) view.findViewById(R.id.tvdl); 
      TextView last = (TextView) view.findViewById(R.id.tvLastName); 
      TextView first = (TextView) view.findViewById(R.id.tvFirstName); 
      TextView middle = (TextView) view.findViewById(R.id.tvMiddleName); 
      TextView ss = (TextView) view.findViewById(R.id.tvSS); 

      Person mperson = people.get(position); 

      dl.setText(mperson.driversLicense); 
      last.setText(mperson.lastName); 
      first.setText(mperson.firstName); 
      middle.setText(mperson.middleName); 
      ss.setText(mperson.socialSecurity); 
     } 

错误:

05-09 23:34:02.000 2418-2418/com.f0xcr4f7.intelwatch E/AndroidRuntime: FATAL EXCEPTION: main Process: com.f0xcr4f7.intelwatch, PID: 2418 android.content.res.Resources$NotFoundException: String resource ID '#0x2d9f9219 at android.content.res.Resources.getText(Resources.java:299) at android.widget.TextView.setText(TextView.java:4132) at com.f0xcr4f7.intelwatch.PersonSearchPop$PersonAdapter.getView(PersonSearchPop.java:112)

回答

1

对于我来说这部分看起来相当怪异。

-------------------------------------------------------------------- 
     Map<String, Object> mperson = new HashMap<String, Object>(); 
     mperson = people.get(position); 

     dl.setText(mperson.getString("dl")); 
    -------------------------------------------------------------------- 

您将mperson定义为HashMap,但您从人(即Person)列表中接收到Person对象。 所以我会怎么做

Person mperson = people.get(position); 
d1.setText(mPerson.driverLicense + ""); 
+0

得到一个人的错误mperson = people.get(position);?它说变量已经在范围内定义了。只有其他类似的地方是Person p = people.get(position);但为什么这很重要? – F0xcr4f7

+0

那么它与p = people.get(position)一起工作?如果是这样,这意味着你已经声明了mPerson,如果你想重用mPerson,并且它是正确的类型,请删除类型声明'mPerson = people.get(position);' – thekekc

+0

好吧,我现在可以回到这并看看它现在是否有效,但它不。生病更新原始帖子。 – F0xcr4f7

相关问题